'imposta alias ' per qualsiasi comando e il comando alias funzioneranno bene sulla shell interattiva, mentre l'alias non funziona all'interno dello script.
# alias ls1='ls -lrt' # ls1 total 0 -rw-r--r-- 1 root root 0 Oct 12 12:14 file1 -rw-r--r-- 1 root root 0 Oct 12 12:14 file2
# cat script.sh #!/bin/bash # Script to check the alias output alias ls1='ls -lrt' ls1
# chmod +x script.sh # ./script.sh ./script.sh: line 3: ls1: command not found
Gli alias non vengono espansi quando la shell non è interattiva, a meno che non siano expand_alias l'opzione shell viene impostata utilizzando shopt . Può essere testato aggiungendo il comando "alias" al semplice script bash e l'esecuzione dello script non darà il comando alias, mentre sulla shell interattiva fornirà l'elenco disponibile di alias come mostrato nell'esempio sopra.
Dalla pagina man di Bash :
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
Fare funzionare l'alias nello script bash
È possibile utilizzare il seguente approccio per far funzionare il comando alias negli script bash. Le variabili possono essere utilizzate nello script bash per impostare le opzioni preferite per qualsiasi comando e tali variabili possono essere riferite nella sezione successiva dello script per soddisfare la necessità di alias all'interno degli script.
Aggiungi il comando 'shopt -s expand_aliases' all'inizio dello script per espandere gli alias e far funzionare il comando alias nello script bash.
# cat script.sh #!/bin/bash # Script to check the alias output shopt -s expand_aliases alias ls1='ls -lrt' ls1
# chmod +x script.sh # ./script.sh total 0 -rw-r--r-- 1 root root 0 Oct 12 12:14 file1 -rw-r--r-- 1 root root 0 Oct 12 12:14 file2