Nehmen wir an, ich habe ein Terminal geöffnet und einige Shell-Befehle eingegeben / ausgeführt.
Aber ich habe nicht explizit Bash oder eine andere Shell aufgerufen.
Welche Shell wurde standardmäßig verwendet?
Nehmen wir an, ich habe ein Terminal geöffnet und einige Shell-Befehle eingegeben / ausgeführt.
Aber ich habe nicht explizit Bash oder eine andere Shell aufgerufen.
Welche Shell wurde standardmäßig verwendet?
Antworten:
Die auf Ihrer Zeile in angegebene /etc/passwd
(es ist eine :
getrennte Zeile und die Shell ist die letzte).
Zum Beispiel meine:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
Hier ist es /bin/bash
(der Ubuntu-Standard)
Sie können auch verwenden chsh
:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Das sagt mir, dass meine Muschel ist /bin/bash
und lässt mich sie ändern.
Schließlich echo $SHELL
wird das gleiche tun:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix
. Ich sehe keinen Grund, das in eine Bash-Subshell einzuschließen.
sudo bash -c "..."
sichergestellt, dass die gesamte Pipe von Root ausgeführt wird.
commandA | sudo commandB | commandC
, können Sie eine sudo id
erste id
root
chsh
dann müssen Sie sich abmelden und wieder anmelden , um diese Änderung zu sehen.
GNU Bash ist die Shell, die standardmäßig in Terminals unter Ubuntu verwendet wird. Wenn jedoch Skripte beim Systemstart ausgeführt werden, wird dash verwendet, da dash / bin / sh ist.
Dies ist in der Umgebungsvariablen $ SHELL definiert. Sie können dies überprüfen, indem Sie echo $SHELL
im Terminal eingeben .
Wenn Sie Folgendes eingeben, wird angezeigt, mit welcher Shell das Terminal geöffnet wurde:
echo $SHELL
Um jedoch herauszufinden, in welcher Shell Sie sich gerade befinden (Sie haben sie möglicherweise geändert), geben Sie Folgendes ein
ps -p $$
zB werden Sie sehen, dass die Shell in der Beispielausgabe bash ist
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Eine andere Methode ist zu verwenden
echo $0
Dadurch wird einfach der Name der aktuellen Shell zurückgegeben.
echo $0
Standardmäßig ist es bash:
env | grep ^SHELL=
In den meisten Fällen wird produzieren
SHELL=/bin/bash
useradd
, ist dies standardmäßig der Fall sh
. $ useradd -D|grep SHELL
SHELL=/bin/sh
.
Um den Dateipfad der aktuellen Shell-Programmdatei abzurufen, kann man verwenden
readlink -f /proc/$$/exe
Einige mögliche Ausgaben sind:
/bin/bash
/usr/bin/bash
/usr/bin/zsh
/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh