私の~/.bashrc
ファイルには2つの定義があります。
commandA
、これは長いパスのエイリアスです。commandB
、これはBashスクリプトのエイリアスです。
これら2つのコマンドを使用して同じファイルを処理したいので、次のBashスクリプトを作成しました。
#!/bin/bash
for file in "$@"
do
commandA $file
commandB $file
done
セッションからログアウトして再ログインした後もcommand not found
このスクリプトを実行すると、Bashは両方のコマンドに対してエラーメッセージを表示します。
私は何が間違っていましたか?
ベストアンサー1
bashのマンページを見ると、次のようになります。
シェルが非対話型の場合、Shoptを使用してExpand_aliasesシェルオプションを設定しない限り、エイリアスは拡張されません(以下のSHELL BUILTIN COMMANDSの下のshoptの説明を参照)。
だから
shopt -s expand_aliases
あなたのスクリプトから。
エイリアスファイルをスクリプトで設定してからインポートする必要があります。
shopt -s expand_aliases
source ~/.bash_aliases