Quand je lance echo $SHELL
la sortie dit /bin/tcsh
ce qui signifie que je lance un tcsh
shell. Mais par exemple quand je lance la commande suivante
alias emacs 'emacs -nw'
Je reçois l'erreur suivante:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
et quand j'émets alias emacs="emacs -nw"
ça fonctionne bien!
C'est déroutant puisque je cours tcsh
mais les commandes sont interprétées par bash
.
Quelle pourrait être la raison?
tcsh/csh
a sa coquille actuelle dans$shell
Réponses:
$SHELL
n’est pas nécessairement votre shell actuel, c’est le shell de connexion par défaut . Pour vérifier le shell que vous utilisez, essayezCela devrait fonctionner sur les dernières Unix / Linux avec un
ps
support qui prend en charge la syntaxe BSD. Sinon, c'est la manière portable (POSIX)Cela devrait retourner quelque chose comme ceci si vous exécutez
tcsh
:Si vous voulez avoir
tcsh
votre shell par défaut, utilisezchsh
pour le définir.la source
chsh
,.bashrc
ne sera lu que si vous exécutez i) bash et ii) en tant que shell interactif sans connexion. Comment vous connectez-vous à cette machine?ps $$
À partir de la ligne de commande, vous pouvez également utiliser la
$0
variable pour déterminer le shell que vous utilisez. par exemple:Remarque: vous ne pouvez pas déterminer le shell à l'aide de $ 0 dans un script, car $ 0 sera le script lui-même.
la source
Cela fonctionne pour linux:
ou, si vous avez besoin d'une sélection plus forte (plus de systèmes):
la source
Ceci est un amendement à toutes les meilleures réponses ci-dessus. J'ai eu un petit problème d'identification de dash à un moment donné; semblait juste de partager:
Bon pour le dépannage dans des endroits restreints, c'est tout. À votre santé.
la source