’ange alias’ för något kommando och aliaskommandot fungerar bra på det interaktiva skalet, medan aliasing inte fungerar inuti skriptet.
1. Interactive 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. Inuti skriptet
# 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
Alias utökas inte när skalet inte är interaktivt, såvida inte skalalternativet expand_aliases ställs in med shopt., Det kan testas genom att lägga till kommandot ”alias” till enkelt bash-skript och scriptutförandet ger inte aliaskommandot, medan det på det interaktiva skalet kommer att ge den tillgängliga listan över aliasing som visas i exemplet ovan.
Från mansidan i 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).
gör aliasarbete i bash-skript
följande tillvägagångssätt kan användas för att göra aliaskommandoarbete i bash-skript., Variabler kan användas i Bash-skriptet för att ställa in föredragna alternativ för vilket kommando som helst, och dessa variabler kan refereras i det senare avsnittet av skriptet för att räcka till behovet av alias inuti skript.
Lägg till kommandot ’shopt-s expand_aliases’ i början av skriptet för att expandera alias och göra aliaskommandot arbete i bash-skriptet.
# 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