En mi ~/.bashrc el archivo reside en dos definiciones:
commandA, que es un alias de una ruta más largacommandB, que es un alias de un script Bash
Quiero procesar el mismo archivo con estos dos comandos, así que escribí el siguiente script de Bash:
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
Incluso después de cerrar la sesión y volver a iniciar sesión, Bash me indica command not found errores para ambos comandos cuando ejecuto este script.
¿Qué estoy haciendo mal?
Respuesta aceptada:
En primer lugar, como dijo ddeimeke, los alias por defecto no se expanden en shells no interactivos.
Segundo, .bashrc no es leído por shells no interactivos a menos que establezca el BASH_ENV variable de entorno.
Pero lo más importante:¡no hagas eso! ¿Por favor? Un día moverá esa secuencia de comandos a algún lugar donde no estén establecidos los alias necesarios y se estropeará de nuevo.
En su lugar, establezca y use variables como accesos directos en su secuencia de comandos:
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done