Pourquoi 0 $ est-il réglé sur -bash?

8

Le premier nom du processus de connexion semble être défini sur -bash, mais si je sous-coquille, il devient bash. par exemple:

root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash

-bash entraîne l'échec de certains scripts, tels que . /usr/share/debconf/confmodule

exec /usr/share/debconf/frontend -bash
Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186.
open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59

Quelqu'un sait-il pourquoi il $0est réglé sur -bash?

James Shimer
la source
1
@ RaduRădeanu Utilisation inutile de chat repéré!
gniourf_gniourf

Réponses:

5

Si la sortie de la echo $0commande est, -bashcela signifie qu'elle a bashété invoquée en tant que shell de connexion. man bashdit quelque part à la ligne 126:

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.

En savoir plus ici: Différence entre le shell de connexion et le shell sans connexion .

Donc, votre shell est toujours /bin/bash(cela peut être vérifié avec la echo $SHELLcommande) et je vous suggère d'utiliser cette commande qui vous donne normalement une erreur:

exec /usr/share/debconf/frontend bash
Radu Rădeanu
la source
Merci, il semble que la connexion ajoute correctement le "-" au nom du processus du shell de connexion. Cela répond à ma question.
James Shimer