‘Alias festlegen ‘ für jeden Befehl und der Alias-Befehl funktioniert gut auf der interaktiven Shell, während Aliasing innerhalb des Skripts nicht funktioniert.
1. Interaktive 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. Innerhalb des Skripts
# 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
Aliase werden nicht erweitert, wenn die Shell nicht interaktiv ist, außer expand_aliases Die Shell-Option wird mit shopt gesetzt . Es kann getestet werden, indem der Befehl „Alias“ zu einem einfachen Bash-Skript hinzugefügt wird, und die Skriptausführung gibt den Alias-Befehl nicht aus, während es auf der interaktiven Shell die verfügbare Liste von Aliasing bereitstellt, wie im obigen Beispiel gezeigt.
Aus der Manpage von 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).
Alias in Bash-Skripten funktionieren
Der folgende Ansatz kann verwendet werden, um den Alias-Befehl in Bash-Skripten zum Laufen zu bringen. Variablen können im Bash-Skript verwendet werden, um die bevorzugten Optionen für jeden Befehl festzulegen, und auf diese Variablen kann im späteren Abschnitt des Skripts verwiesen werden, um die Notwendigkeit eines Alias in Skripten zu erfüllen.
Fügen Sie am Anfang des Skripts den Befehl „shopt -s expand_aliases“ hinzu, um Aliase zu erweitern und den Alias-Befehl im Bash-Skript funktionieren zu lassen.
# 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