สมมติว่าฉันเปิดเทอร์มินัลแล้วป้อน / เรียกใช้คำสั่งเชลล์บางคำสั่ง
แต่ฉันไม่ได้เรียก 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