Si j'examine mon shell bash dans un terminal OS X (10.6.4), par exemple en tapant echo $0, il y a un tableau de bord en face de ma coquille, comme ceci: -bash. Que signifie ce tiret?
Si j'examine mon shell bash dans un terminal OS X (10.6.4), par exemple en tapant echo $0, il y a un tableau de bord en face de ma coquille, comme ceci: -bash. Que signifie ce tiret?
Réponses:
Cela signifie qu'il bashest invoqué en tant que shell de connexion.
man bash dit:
Un shell de connexion est un shell dont le premier caractère de l'argument zéro est un
-, ou un commençant par l'--loginoption.Lorsque bash est appelé en tant que shell de connexion interactif ou en tant que shell non interactif avec l'
--loginoption, il lit et exécute d'abord les commandes du fichier/etc/profile, si ce fichier existe. Après avoir lu ce fichier, il recherche~/.bash_profile,~/.bash_loginet~/.profile, dans cet ordre, et lit et exécute les commandes de la première qui existe et est lisible. L'--noprofileoption peut être utilisée lorsque le shell est démarré pour inhiber ce comportement.Lorsqu'un shell de connexion se ferme, bash lit et exécute les commandes du fichier
~/.bash_logout, s'il existe.
Vous trouverez login -pfdans votre pssortie, qui démarre un shell de connexion par défaut.
Essayez de courir login -pfet login -pflvoyez la différence. man logindécrit la différence:
-lIndique au programme exécuté par login qu'il ne s'agit pas d'une session de connexion (par convention, une session de connexion est signalée au programme avec un trait d'union comme premier caractère deargv[0]; cette option le désactive), et l'empêche d'chdir(2)entrer dans le répertoire personnel de l'utilisateur . La valeur par défaut est d'ajouter le trait d'union (il s'agit d'une session de connexion).
echo $0: si je tape echo $0dans le terminal invoqué par ctrl + alt + f1, le résultat est -bash; mais si je le tape dans termianl invoqué par ctrl + alt + t, le résultat est bash(pas de tiret de tête). Pourriez-vous expliquer pourquoi?
--loginargument, il ne change pas son argv[0], mais agit comme un shell de connexion.
mancitations