「エイリアスを設定 ‘ を任意のコマンドに使用すると、エイリアス コマンドは対話型シェルで正常に機能しますが、エイリアスはスクリプト内では機能しません。
<強い>1.インタラクティブ シェル
# 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.スクリプト内
# 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
expand_aliases でない限り、シェルがインタラクティブでない場合、エイリアスは展開されません。 シェル オプションは shopt を使用して設定されます .コマンド「エイリアス」を単純な bash スクリプトに追加することでテストできます。スクリプトの実行ではエイリアス コマンドは表示されませんが、インタラクティブ シェルでは、上記の例に示すように、使用可能なエイリアスのリストが表示されます。
Bash の man ページから:
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).
bash スクリプトでエイリアスを機能させる
次のアプローチを使用して、エイリアス コマンドを bash スクリプトで機能させることができます。変数を bash スクリプトで使用して、任意のコマンドの優先オプションを設定できます。これらの変数は、スクリプト内のエイリアスの必要性を満たすために、スクリプトの後半のセクションで参照できます。
スクリプトの先頭にコマンド「shopt -s expand_aliases」を追加して、エイリアスを展開し、エイリアス コマンドを 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