‘nastavit alias ‘ pro jakýkoli příkaz a příkaz alias bude v interaktivním prostředí fungovat dobře, zatímco alias uvnitř skriptu nefunguje.
1. Interaktivní shell
# 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
2. Uvnitř skriptu
# 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
Aliasy se nerozbalí, když shell není interaktivní, s výjimkou expand_aliases shell se nastavuje pomocí shopt . Lze jej otestovat přidáním příkazu „alias“ do jednoduchého bash skriptu a spuštění skriptu nevydá příkaz alias, zatímco v interaktivním prostředí poskytne dostupný seznam aliasů, jak je ukázáno ve výše uvedeném příkladu.
Z manuálové stránky 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).
Zajištění funkčnosti aliasu ve skriptu bash
Následující přístup lze použít k tomu, aby příkaz alias fungoval ve skriptech bash. Proměnné lze použít ve skriptu bash k nastavení preferovaných možností pro jakýkoli příkaz a na tyto proměnné lze odkazovat v pozdější části skriptu, aby stačily aliasy ve skriptech.
Přidejte příkaz „shopt -s expand_aliases“ na začátek skriptu, aby se aliasy rozbalily a aby příkaz alias fungoval ve skriptu 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