‘imposta alias‘ per qualsiasi comando e il comando alias funzionerà correttamente sulla shell interattiva, mentre l’aliasing non funziona all’interno dello script.
1. Shell interattiva
# alias ls1='ls -lrt'# ls1total 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
2. All’interno dello script
# cat script.sh#!/bin/bash# Script to check the alias outputalias 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 l’opzione expand_aliases shell non sia impostata usando 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 aliasing come mostrato nell’esempio precedente.
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).
Far funzionare 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 outputshopt -s expand_aliasesalias ls1='ls -lrt'ls1