Pourquoi $ 0 est-il défini sur -bash?

7

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

[email protected]:~# echo $0
-bash
[email protected]:~# bash
[email protected]:~# 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 $0 est défini sur -bash ?

    
posée James Shimer 30.10.2013 - 15:06
la source

1 réponse

4

Si le résultat de la commande echo $0 est -bash , cela signifie que bash a été appelé en tant que shell de connexion. man bash dit 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.

Pour en savoir plus sur cet élément: Différence entre le shell de connexion et le non -Login Shell .

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

exec /usr/share/debconf/frontend bash
    
réponse donnée Radu Rădeanu 30.10.2013 - 17:08
la source

Lire d'autres questions sur les étiquettes