私は次の問題で立ち往生しています。
.bashrc
(および.bash_profile
)でエイリアスを定義しました:
alias echo2="echo"
これはうまく機能します:
$ echo2 "test"
test
ただし、リダイレクト後に使用しようとすると、機能しません。
ls | awk '{print "echo2 "$1}' | bash
bash: line 1: echo2: command not found
bash: line 2: echo2: command not found
...
誰かが理由を知っていますか?どうすればそれを機能させることができますか?
入力として新しいbash
プロセスにパイプします。ただし、このプロセスでは初期化スクリプトが読み込まれないため、エイリアスは定義されていません。
man bash
のセクション[〜#〜] invocation [〜#〜]を確認してください:エイリアスを定義したファイルに応じて、bash
を作成する必要がありますログインシェル(-l
)またはインタラクティブ(-i
)のいずれかを処理して、そのファイルをロードします。
追加の制限があります。シェルが対話型でない場合、エイリアスは無視されます。ただし、回避策があります。
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).
または、エイリアスの代わりにシェルfunctionsを使用することを検討することもできます。