สมมติว่าฉันเปิดเทอร์มินัลแล้วป้อน / เรียกใช้คำสั่งเชลล์บางคำสั่ง
แต่ฉันไม่ได้เรียก Bash หรือกระสุนอื่น ๆ อย่างชัดเจน
โดยค่าเริ่มต้นคืออะไร
สมมติว่าฉันเปิดเทอร์มินัลแล้วป้อน / เรียกใช้คำสั่งเชลล์บางคำสั่ง
แต่ฉันไม่ได้เรียก Bash หรือกระสุนอื่น ๆ อย่างชัดเจน
โดยค่าเริ่มต้นคืออะไร
คำตอบ:
อันที่ระบุไว้ในบรรทัดของคุณใน/etc/passwd(มันเป็น:เส้นแยกและเปลือกเป็นคนสุดท้าย)
ตัวอย่างเช่นของฉัน:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
นี่คือ/bin/bash(ค่าเริ่มต้นของ Ubuntu)
คุณยังสามารถใช้chsh:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
นี่เป็นการบอกเปลือกของฉัน/bin/bashและให้ฉันเปลี่ยนมัน
ในที่สุดecho $SHELLจะทำเช่นเดียวกัน:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unixก็จะเขียนได้ดีเป็น ฉันไม่เห็นเหตุผลใด ๆ ที่จะต้องปิดล้อมนั้นในเชลล์ย่อยของ bash
sudo bash -c "..."จะทำให้แน่ใจได้ว่ารูททั้งหมดจะถูกดำเนินการโดยรูท
commandA | sudo commandB | commandCคุณสามารถทำสิ่งsudo idแรกได้ (เรียกใช้idคำสั่งเป็นrootแต่ยังได้รับโทเค็น" ใช้ sudo โดยไม่ต้องใช้รหัสผ่าน " ซึ่งใช้เวลานานถึง (เริ่มต้น) 15 นาที
chshแล้วคุณต้องออกจากระบบและกลับเข้าสู่ระบบเพื่อดูการเปลี่ยนแปลงนี้
GNU Bash เป็นเชลล์ที่ใช้โดยค่าเริ่มต้นในเทอร์มินัลบน Ubuntu อย่างไรก็ตามเมื่อสคริปต์ถูกเรียกใช้งานในการบูตระบบจะมีการใช้เส้นประเนื่องจากเป็นเส้นประที่ / bin / sh
สิ่งนี้ถูกกำหนดไว้ในตัวแปรสภาพแวดล้อม $ SHELL คุณสามารถตรวจสอบโดยการพิมพ์echo $SHELLใน terminal
การพิมพ์ข้อมูลต่อไปนี้จะแสดงว่าเชลล์ใดบ้างที่เทอร์มินัลเปิดด้วย:
echo $SHELL
อย่างไรก็ตามเพื่อค้นหาว่าคุณใช้เชลล์ชนิดใดในปัจจุบัน (คุณอาจเปลี่ยนแปลง)
ps -p $$
เช่นคุณจะเห็นว่าเชลล์นั้นทุบตีในผลลัพธ์ตัวอย่าง
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
อีกวิธีคือการใช้
echo $0
สิ่งนี้จะส่งคืนชื่อของเชลล์ปัจจุบัน
echo $0
โดยค่าเริ่มต้นมันทุบตี:
env | grep ^SHELL=
ในกรณีส่วนใหญ่จะผลิต
SHELL=/bin/bash
useraddค่าเริ่มต้นshคือ $ useradd -D|grep SHELL SHELL=/bin/sh.
ในการรับพา ธ ไฟล์ของเชลล์ที่สามารถเรียกทำงานได้ในปัจจุบันสามารถใช้ได้
readlink -f /proc/$$/exe
ผลลัพธ์ที่เป็นไปได้คือ:
/bin/bash/usr/bin/bash/usr/bin/zsh/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh