GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué The Bash Script no reconoce los alias?

En mi ~/.bashrc el archivo reside en dos definiciones:

  1. commandA , que es un alias de una ruta más larga
  2. commandB , 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

Linux
  1. ¿Por qué no 'encuentra' Mostrar este archivo?

  2. ¿Por qué no funciona ~/.bash_profile?

  3. ¿Por qué "sudo Su" en un script de Shell no ejecuta el resto del script como root?

  4. El Bash'?

  5. Bash Script para eliminar el archivo más antiguo de una carpeta?

35 ejemplos de secuencias de comandos Bash

¿Por qué el archivo de traducción de Bash no contiene todos los textos de error?

¿Por qué Ls -l no muestra la hora o el año de cada archivo?

¿Por qué no puedo escapar de los espacios en un script Bash?

¿Cómo sé el nombre del archivo de script en un script Bash?

¿Por qué necesita poner #!/bin/bash al comienzo de un archivo de script?