Diyelim ki bir terminal açtım ve bazı kabuk komutları girdim / yürüttüm.
Ama açıkça Bash'i veya başka bir kabuğu çağırmadım.
Hangi kabuk varsayılan olarak kullanıldı?
Diyelim ki bir terminal açtım ve bazı kabuk komutları girdim / yürüttüm.
Ama açıkça Bash'i veya başka bir kabuğu çağırmadım.
Hangi kabuk varsayılan olarak kullanıldı?
Yanıtlar:
Satırınızda belirtilen satır /etc/passwd
( :
ayrılmış satır ve kabuk son satırdır).
Mesela benimki:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
İşte /bin/bash
(Ubuntu varsayılanı)
Ayrıca şunları da kullanabilirsiniz chsh
:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Bu bana benim kabuğum olduğunu /bin/bash
ve değiştirmeme izin verdiğini söylüyor.
Sonunda, echo $SHELL
aynısını yapacağız:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix
. Bunu bir bash subshell içine yerleştirmek için bir sebep görmüyorum.
sudo bash -c "..."
, tüm borunun kök tarafından çalıştırılmasını sağlar.
commandA | sudo commandB | commandC
, sudo id
ilkini yapabilirsiniz ( id
komutu çalıştırır root
, ancak aynı zamanda 15 dakika süren (varsayılan) 15 dakika süren bir " parola olmadan sudo kullan " belirteci de alır.
chsh
o zaman sen çıkış yapıp tekrar giriş gerekir bu değişikliği görmek için.
aşağıdakini yazmak, terminalin hangi kabuğu açtığını gösterecektir:
echo $SHELL
Ancak, şu anda hangi kabukta olduğunuzu öğrenmek için (onu değiştirmiş olabilirsiniz)
ps -p $$
Örneğin, kabuğun örnek çıktıda bash olduğunu göreceksiniz
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Başka bir yöntem kullanmaktır
echo $0
bu sadece geçerli kabuğun adını döndürür.
echo $0
Varsayılan olarak bu bash:
env | grep ^SHELL=
Çoğu durumda üretecek
SHELL=/bin/bash
useradd
, varsayılan olarak sh
. $ useradd -D|grep SHELL
SHELL=/bin/sh
.
Yürürlükteki kabuk çalıştırılabilir dosya yolunu kullanmak için
readlink -f /proc/$$/exe
Bazı olası çıktılar:
/bin/bash
/usr/bin/bash
/usr/bin/zsh
/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh