Diciamo che ho aperto un terminale e inserito / eseguito alcuni comandi di shell.
Ma non ho invocato esplicitamente Bash o qualsiasi altra shell.
Quale shell è stata utilizzata per impostazione predefinita?
Diciamo che ho aperto un terminale e inserito / eseguito alcuni comandi di shell.
Ma non ho invocato esplicitamente Bash o qualsiasi altra shell.
Quale shell è stata utilizzata per impostazione predefinita?
Risposte:
Quello specificato sulla tua linea in /etc/passwd(è una :linea separata e la shell è quella finale).
Ad esempio il mio:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
Eccolo /bin/bash(il default di Ubuntu)
Puoi anche usare chsh:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Questo mi sta dicendo che è il mio guscio /bin/bashe mi sta lasciando cambiare.
Infine, echo $SHELLfarà lo stesso:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix. Non vedo alcun motivo per racchiuderlo in una subshell bash.
sudo bash -c "..."assicurarsi che l'intera pipe fosse eseguita da root.
commandA | sudo commandB | commandC, potresti fare un sudo idprimo (esegue il idcomando as root, ma acquisisce anche un token " usa sudo senza richiesta password " che dura per 15 minuti (impostazione predefinita).
chshallora è necessario disconnettersi e riconnettersi per vedere questo cambiamento.
GNU Bash è la shell utilizzata di default nei terminali su Ubuntu. Tuttavia, quando gli script vengono eseguiti all'avvio del sistema, viene utilizzato dash, poiché è dash che è / bin / sh.
Questo è definito nella variabile ambientale $ SHELL. Puoi controllare digitando echo $SHELLnel terminale.
digitando quanto segue verrà visualizzata la shell aperta dal terminale:
echo $SHELL
Tuttavia, per scoprire in quale shell sei attualmente (potresti averlo cambiato) digitare
ps -p $$
ad esempio vedrai che la shell è bash nell'output di esempio
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Un altro metodo è usare
echo $0
questo restituirà semplicemente il nome della shell corrente.
echo $0
Di default è bash:
env | grep ^SHELL=
Nella maggior parte dei casi produrrà
SHELL=/bin/bash
useradd, per impostazione predefinita è sh. $ useradd -D|grep SHELL SHELL=/bin/sh.
Per ottenere il percorso del file dell'eseguibile shell corrente si può usare
readlink -f /proc/$$/exe
Alcune possibili uscite sono:
/bin/bash/usr/bin/bash/usr/bin/zsh/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh