Votre système (comme de nombreux systèmes Unix) n'a pas de cd
externe commande (du moins pas sur ce chemin). Même s'il en avait un, le ls
vous donnerait la liste des répertoires du répertoire d'origine. Une commande externe ne peut jamais changer de répertoire pour le processus appelant (votre shell).
Supprimez l'alias de l'environnement avec unalias cd
(et supprimez également sa définition de tous les fichiers d'initialisation du shell auxquels vous l'avez peut-être ajouté).
Avec une fonction shell, vous pouvez la faire fonctionner comme cd
fait habituellement, avec une invocation supplémentaire de ls
à la fin si le cd
réussi :
cd () {
command cd "[email protected]" && ls -lah
}
ou,
cd () { command cd "[email protected]" && ls -lah; }
Cela appellerait le cd
commande intégrée à votre shell avec les mêmes arguments de ligne de commande que vous avez donnés à la fonction. Si le changement de répertoire a réussi, le ls
courrait.
Le command
La commande empêche le shell d'exécuter la fonction de manière récursive.
La définition de la fonction (telle qu'écrite ci-dessus) ira dans le fichier de démarrage de votre shell. Avec bash
, cela pourrait être ~/.bashrc
. La définition de la fonction serait alors active dans la prochaine nouvelle session interactive du shell . Si vous voulez qu'il soit actif maintenant , puis exécutez la définition de la fonction telle quelle à l'invite du shell interactif, qui la définira dans votre session interactive en cours.
Sur les systèmes où cd
est disponible en tant que commande externe, cette commande ne change pas non plus de répertoire pour le processus appelant. La seule utilisation réelle d'une telle commande est de fournir la conformité POSIX et d'agir comme un test pour savoir si le changement de répertoire vers un particulier serait possible .
J'ai pu le résoudre en supprimant à nouveau l'alias avec unalias cd
Cela s'est produit parce que :
$ type cd
cd is a shell builtin