ฉันกำลังใช้เชลล์ตัวไหนอยู่?


39

เมื่อฉันรันecho $SHELLเอาต์พุตบอกว่า/bin/tcshซึ่งหมายความว่าฉันกำลังใช้tcshเชลล์ แต่ตัวอย่างเช่นเมื่อฉันออกคำสั่งต่อไปนี้

alias emacs 'emacs -nw' 

ฉันได้รับข้อผิดพลาดต่อไปนี้:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

และเมื่อฉันออกalias emacs="emacs -nw"มันทำงานได้ดี!

นี้จะทำให้เกิดความสับสนตั้งแต่ผมทำงานแต่คำสั่งจะถูกตีความโดยtcshbash

อะไรคือเหตุผล?


tcsh/cshมีกระสุนปัจจุบันใน$shell
HongboZhu

คำตอบ:


48

$SHELLไม่จำเป็นต้องเป็นเปลือกปัจจุบันของคุณก็คือเปลือกเข้าสู่ระบบเริ่มต้น เพื่อตรวจสอบเชลล์ที่คุณใช้งานอยู่ให้ลอง

ps $$

สิ่งนี้ควรใช้กับ Unix / Linux ล่าสุดpsที่มีไวยากรณ์รองรับ BSD มิฉะนั้นนี่เป็นวิธีพกพา (POSIX)

ps -p $$

ควรส่งคืนสิ่งนี้หากคุณใช้งานtcsh:

8773 pts/10   00:00:00 tcsh

หากคุณต้องการที่จะtcshเป็นเปลือกเริ่มต้นของคุณใช้chshเพื่อตั้งค่า


คุณรู้วิธีที่ฉันสามารถตรวจสอบว่าไฟล์การกำหนดค่าที่โหลด? (ซึ่ง bashrc)
coffeMug

@Coffe_Mug ไม่แน่ใจว่าคุณหมายถึงอะไร คุณสามารถตั้งค่าเริ่มต้นเปลือกด้วยchsh, .bashrcจะอ่านเฉพาะถ้าคุณ i) ที่ทำงานทุบตีและ ii) การทำงานเป็นแบบโต้ตอบเปลือกที่ไม่ได้เข้าสู่ระบบ คุณเข้าสู่เครื่องนี้ได้อย่างไร
terdon

ฉันมีสคริปต์ที่เริ่มเปลือก bash นี้จากเปลือก tcsh
coffeMug

4
ทำไมไม่เพียงแค่ps $$
cjm

1
@cjm ทำไมไม่ตอบตอบแก้ไข
terdon

8

จากบรรทัดคำสั่งคุณยังสามารถใช้$0ตัวแปรเพื่อกำหนดว่าคุณใช้เชลล์ตัวใดอยู่ เช่น:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

หมายเหตุ: คุณไม่สามารถกำหนดเชลล์ได้โดยใช้ $ 0 ภายในสคริปต์เนื่องจาก $ 0 จะเป็นสคริปต์เอง


1

ใช้งานได้กับ linux:

lsof -a -p $$ -d txt

หรือถ้าคุณต้องการตัวเลือกที่ดีกว่า (ระบบเพิ่มเติม):

lsof -a +D /bin +D /usr/bin -p $$ -d txt

1

นี่คือการแก้ไขคำตอบที่ดีกว่าทั้งหมดข้างต้น ฉันมีปัญหาเล็กน้อยในการระบุจุดประหนึ่ง ดูเหมือนจะถูกแบ่งปัน:

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

ดีสำหรับการแก้ไขปัญหาในจุดที่แคบคือทั้งหมด ไชโย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.