Considérez la fonction bash:
func() {
cd /;
echo test;
}
L'appeler fait ce à quoi vous vous attendez:
~:>func
test
/:>
Mais quand il est appelé à partir d'un sous-shell (par exemple en utilisant des backticks ou $()), il se comporte de manière très étrange.
~:>func() { cd /; echo test; }
~:>echo $(func)
test Saving session... ...saving history...truncating history files... ...completed.
~:>
Ce problème n'apparaît pas si cd
n'est pas exécuté dans la fonction:
~:>func() { echo test; }
~:>echo $(func)
test
~:>
Cela pose problème à certains scripts qui dépendent de certains comportements de sortie, par exemple CLASSPATH=$(func)
où func
est complexe et nécessite l'utilisation de cd
.
Ce qui est étrange, c'est que cela fonctionnait bien avant. Cela n'a commencé à se produire que récemment, mais je ne sais pas ce qui aurait pu causer cela.
Note: alias cd
indique "alias: cd: not found" et which cd
renvoie /usr/bin/cd qui est un script identique à un autre Mac qui n'a pas le problème.