‚Alias festlegen’für jeden Befehl und den Alias-Befehl funktioniert in der interaktiven Shell einwandfrei, während das Aliasing im Skript nicht funktioniert.
1. Interaktive shell
# 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. Innerhalb des Skripts
# 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
Aliase werden nicht erweitert, wenn die Shell nicht interaktiv ist, es sei denn, die Shell-Option expand_aliases wird mit shopt festgelegt., Es kann durch Hinzufügen des Befehls „alias“ zu einem einfachen Bash-Skript getestet werden, und die Skriptausführung gibt den Alias-Befehl nicht aus, während er in der interaktiven Shell die verfügbare Liste des Aliasings bereitstellt, wie im obigen Beispiel gezeigt.
Von 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 script arbeiten lassen
Der folgende Ansatz kann verwendet werden, damit alias command in bash Scripts funktioniert., Variablen können im Bash-Skript verwendet werden, um die bevorzugten Optionen für jeden Befehl festzulegen, und diese Variablen können im späteren Abschnitt des Skripts referenziert 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 Aliasbefehl im Bash-Skript zum Laufen zu bringen.
# 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