'set alias' dla dowolnego polecenia i polecenie alias będzie działać dobrze na interaktywnej powłoce, podczas gdy aliasing nie działa wewnątrz skryptu.
1. Interaktywna powłoka
# 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. Wewnątrz skryptu
# 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
aliasy nie są rozwijane, gdy powłoka nie jest interaktywna, chyba że opcja powłoki expand_aliases jest ustawiona za pomocą shopt., Można go przetestować dodając polecenie „alias” do prostego skryptu bash, a wykonanie skryptu nie da polecenia alias, podczas gdy w interaktywnej powłoce dostarczy dostępną listę aliasingu, jak pokazano w powyższym przykładzie.
ze strony podręcznika 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).
Tworzenie aliasów w skrypcie bash
do tworzenia aliasów w skryptach bash można użyć następującego podejścia., Zmienne mogą być używane w skrypcie bash, aby ustawić preferowane opcje dla dowolnych poleceń, a te zmienne mogą być wymienione w późniejszej sekcji skryptu, aby wystarczyć do użycia aliasów wewnątrz skryptów.
Dodaj polecenie 'shopt-s expand_aliases' na początku skryptu, aby rozwinąć aliasy i sprawić, że komenda alias będzie działać w skrypcie bash.
# cat script.sh#!/bin/bash# Script to check the alias outputshopt -s expand_aliasesalias ls1='ls -lrt'ls1
# chmod +x script.sh# ./script.shtotal 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