私の~/.bashrc
ファイルには2つの定義があります:
-
commandA
、これは長いパスのエイリアスです -
commandB
、これはBashスクリプトのエイリアスです
これらの2つのコマンドで同じファイルを処理したいので、次のBashスクリプトを作成しました。
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
セッションからログアウトして再度ログインした後でも、Bashはcommand not found
とプロンプトを表示します このスクリプトを実行すると、両方のコマンドでエラーが発生します。
何が間違っているのですか?
承認された回答:
まず第一に、ddeimekeが言ったように、エイリアスはデフォルトでは非対話型シェルでは展開されません。
次に、.bashrc
BASH_ENV
を設定しない限り、非対話型シェルによって読み取られません。 環境変数。
しかし、最も重要なのは、そうしないことです。お願いします?ある日、そのスクリプトを必要なエイリアスが設定されていない場所に移動すると、再び壊れます。
代わりに、スクリプトのショートカットとして変数を設定して使用してください:
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done