Nel mio ~/.bashrc
file risiedono due definizioni:
commandA
, che è un alias per un percorso più lungocommandB
, che è un alias di uno script Bash
Voglio elaborare lo stesso file con questi due comandi, quindi ho scritto il seguente script Bash:
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
Anche dopo essere uscito dalla mia sessione e aver effettuato nuovamente l'accesso, Bash mi chiede command not found
errori per entrambi i comandi quando eseguo questo script.
Cosa sbaglio?
Risposta accettata:
Innanzitutto, come diceva ddeimeke, gli alias di default non sono espansi nelle shell non interattive.
Secondo, .bashrc
non viene letto da shell non interattive a meno che non imposti il BASH_ENV
variabile di ambiente.
Ma soprattutto:non farlo! Per favore? Un giorno sposterai lo script in un punto in cui non sono impostati gli alias necessari e si romperà di nuovo.
Invece, imposta e usa le variabili come scorciatoie nel tuo script:
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done