GNU/Linux >> Linux の 問題 >  >> Linux

エイリアス コマンドを bash スクリプトまたは .bashrc ファイルで機能させる方法

エイリアスを設定 ‘ を任意のコマンドに使用すると、エイリアス コマンドは対話型シェルで正常に機能しますが、エイリアスはスクリプト内では機能しません。

<強い>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


Linux
  1. Bashスクリプトをデバッグする方法は?

  2. .bashrcの目的とそれはどのように機能しますか?

  3. シェルスクリプトBashでサブストリングをチェックする方法は?

  1. Csvファイルの日付の形式を変更するためのBashスクリプトを作成するにはどうすればよいですか?

  2. Bash スクリプトのスクリプト ファイル名を知るにはどうすればよいですか?

  3. VimでBashスクリプトを強調表示するには?

  1. コマンドエイリアスのBash補完を取得する方法は?

  2. Bashスクリプトでは、Continueコマンドは埋め込みループでどのように機能しますか?

  3. bash スクリプトを使用してファイル名のスペースを置き換える方法