Considera la función bash:
func() {
cd /;
echo test;
}
Llamarla hace lo que se espera:
~:>func
test
/:>
Pero cuando se llama desde un subshell (por ejemplo, usando backticks o $()) se comporta de forma muy extraña.
~:>func() { cd /; echo test; }
~:>echo $(func)
test Saving session... ...saving history...truncating history files... ...completed.
~:>
Este problema no aparece si cd
no se ejecuta en la función:
~:>func() { echo test; }
~:>echo $(func)
test
~:>
Esto está causando problemas con algunos scripts que dependen de cierto comportamiento de salida, por ejemplo CLASSPATH=$(func)
donde func
es complejo y requiere el uso de cd
.
Lo que es extraño es que esto funcionaba bien antes. No empezó a ocurrir hasta hace poco, pero no sé qué lo habría provocado.
Nota: alias cd
informa de que "alias: cd: no se encuentra" y which cd
devuelve /usr/bin/cd que es un script idéntico a otro Mac que no tiene el problema.