ある文章を読んでいたのですが、そこにはこう書いてありました。
.bashrc シェル構成ファイルは、シェル スクリプトを実行するときなど、BASH シェルを生成するたびに実際に実行されます。つまり、サブシェルが作成されるたびに、.bashrc ファイルが実行されます。これにより、.bashrc シェル初期化ファイルで定義したローカル変数またはエイリアスがエクスポートされます。
また、シェルスクリプトを実行するたびに(例えばスクリプト1.sh)サブシェルが作成されます。このサブシェルが作成されると、.bashrcファイルは実行されなければならないため、エイリアスは.bashrcサブシェルで使用できる必要があります (使用できません)。また、このサブシェルでエイリアスが使用できない場合、メイン シェル (スクリプトを実行するシェル) ではどのように使用できるのでしょうか。
答え1
そうですね、Linuxのbashシェルではこう言うことができます
source /path/to/my_lib.sh
ファイルからエイリアス定義をロードします。または、複雑さを軽減するために、そのエイリアス定義を bash スクリプトにコピーするだけで済みます。
しかし、待ってください!これはエイリアスのみを作成します。おそらく
alias foo3 foo9 # describe these two aliases: declare errors if one doesn't exist
新しいエイリアス定義は役立ちますが、エイリアス拡張を有効にする前に実行すると失敗します。
shopt -s expand_aliases # alias xpn ON
以下も考慮してください:
shopt -u expand_aliases # alias xpn OFF
または
shopt expand_aliases # query whether
または
unalias foo3 foo9 # delete these aliases
答え2
でエイリアスを定義しscript1.sh
、それをどこでも利用できるようにしたい場合は、.bashrc
ファイルに以下を追加します。
source /path/to/script1.sh
または代わりに:
. /path/to/script1.sh
スクリプトが存在しない場合にエラーを回避するには、次を使用できます。
if [ -f /path/to/script1.sh ]; then source /path/to/script1.sh; fi
で定義するすべての関数に同じことが当てはまりますscript1.sh
。