0 votes

La commande pour alias local='...' est exécutée à l'ouverture du terminal

J'ai un alias configuré dans mon fichier .bash_profile : alias local='npm run start-local', et pour une raison quelconque, lorsque j'ouvre une nouvelle session de terminal, il tente immédiatement d'exécuter cette commande npm run start-local. Ça fonctionne bien si je le renomme en "local2". Qu'est-ce qui pourrait causer cela ?

J'ai obtenu cet alias de mon collègue qui l'utilise régulièrement, et la seule différence que je connais est qu'il n'est pas sur Mojave.

Éditer : quelque chose d'intéressant que j'ai remarqué est que si je le change en alias local='echo ' alors je vois

NVM_AUTO_MODE
NVM_CURRENT
NVM_MODE
VERSION
-bash: fork: Resource temporarily unavailable

Ce qui ajoute des preuves qu'il exécute ma commande locale lorsque quelque chose tente d'utiliser la variable locale.

0 votes

Votre collègue utilise-t-il un shell bash ?

0 votes

J'ai essayé d'ajouter une variété de commandes alias local à mon fichier .bash_profile et je n'ai pas pu reproduire le comportement que vous décrivez. Il semble que quelque chose de spécifique à votre machine provoque l'invocation de local.

3voto

Rakib Fiha Points 389

Je n'ai pas pu recréer ce que vous avez dit vous arriver.

En disant cela je dirais que: C'est vraiment très dangereux d'invoquer local comme votre alias

Parce que le mot local est une commande intégrée au shell, un mot réservé pour le shell Bash par défaut pour définir une variable locale dans un script Bash à l'intérieur une fonction Bash. Si vous faites type local à partir d'une nouvelle fenêtre de terminal après l'avoir supprimé de votre alias ou en faisant unalias local alors vous verrez que cela dit:

local est une commande intégrée au shell

C'est pourquoi, lorsque vous avez changé votre alias en local2 de local, cela a bien fonctionné puisque local2 n'est pas une commande intégrée au shell.

Cependant, si vous utilisez le Shell Korn (version 93u+), local n'est pas une commande intégrée au shell là-bas. Mais, dans la plupart des autres shells local est un mot réservé ou une commande intégrée au shell. Donc, en résumé: local ne doit pas être enregistré comme un alias

Pour plus d'informations sur les commandes intégrées au shell, consultez la page man: man builtin

Aussi, comme mentionné par Gordon Davidson, il y a définitivement quelque chose qui appelle la variable local et comme vous l'avez remplacée par un alias pour npm, cela s'exécute à chaque fois que vous ouvrez une nouvelle session.

2 votes

Je parie qu'il y a quelque chose dans l'un des scripts de démarrage de la coque qui essaient d'utiliser local pour sa fonction normale (déclarer une variable de coque locale), et à cause de l'alias il exécute plutôt npm. Le fait de ne pas déclarer correctement la variable peut empêcher le script de fonctionner correctement. C'est pourquoi il est vraiment dangereux de remplacer les commandes standard à moins de savoir exactement ce que vous faites.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X