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