Disons que j'ai ouvert un terminal et entré / exécuté des commandes shell.
Mais je n'ai pas invoqué explicitement Bash ni aucun autre shell.
Quel shell a été utilisé par défaut?
Disons que j'ai ouvert un terminal et entré / exécuté des commandes shell.
Mais je n'ai pas invoqué explicitement Bash ni aucun autre shell.
Quel shell a été utilisé par défaut?
Réponses:
Celui spécifié sur votre ligne /etc/passwd
(c'est une :
ligne séparée et le shell est le dernier).
Par exemple le mien:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
La voici /bin/bash
(la valeur par défaut Ubuntu)
Vous pouvez également utiliser chsh
:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Cela me dit que ma coquille est /bin/bash
et me laisse changer.
Enfin, echo $SHELL
va faire la même chose:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix
. Je ne vois aucune raison de mettre cela dans un sous-shell bash.
sudo bash -c "..."
cela garantirait que le canal entier est exécuté par root.
commandA | sudo commandB | commandC
, vous pouvez faire une sudo id
première action (la id
commande est root
chsh
alors vous devez vous déconnecter et vous reconnecter pour voir ce changement.
GNU Bash est le shell utilisé par défaut dans les terminaux sur Ubuntu. Toutefois, lorsque les scripts sont exécutés au démarrage du système, un tiret est utilisé, car il s’agit du tiret / bin / sh.
Ceci est défini dans la variable environnementale $ SHELL. Vous pouvez vérifier en tapant echo $SHELL
dans le terminal.
en tapant ce qui suit affichera le shell avec lequel le terminal a ouvert:
echo $SHELL
Cependant, pour savoir dans quel shell vous vous trouvez (vous l'avez peut-être changé), tapez
ps -p $$
par exemple, vous verrez que le shell est bash dans l'exemple de sortie
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Une autre méthode consiste à utiliser
echo $0
cela retournera simplement le nom du shell actuel.
echo $0
Par défaut c'est bash:
env | grep ^SHELL=
Dans la plupart des cas, produira
SHELL=/bin/bash
useradd
, sa valeur par défaut est sh
. $ useradd -D|grep SHELL
SHELL=/bin/sh
.
Pour obtenir le chemin du fichier de l'exécutable du shell actuel, on peut utiliser
readlink -f /proc/$$/exe
Quelques sorties possibles sont:
/bin/bash
/usr/bin/bash
/usr/bin/zsh
/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh