私の機能があります~/.bashrc
。
foo () { echo $FOO }
これで、次のように動作します。
$ source ~/.bashrc
$ setenv FOO "yes"
$ foo
yes
しかし、そうではありません:
$ env FOO="no" foo
foo: no such file or directory
GNU bash、バージョン 4.2.46(2)-リリース(x86_64-redhat-linux-gnu)
答え1
だからあなたはこれを持っています:
$ foo() { echo "$FOO"; }
$ FOO=bar foo
bar
だから:
$ env FOO=bar foo
env: foo: No such file or directory
env
コマンドはどこで見つけることができますか?info man
氏名:
文字「=」を含まない最初のオペランドは、呼び出すプログラムを指定し、「PATH」環境変数に対して検索されます。
よく。まあ、foo
それはbash関数なので、bashを呼び出すとどうなりますか?
$ env FOO=bar bash -c foo
bash: foo: command not found
ああ、待ってください。関数を ~/.bashrc で定義しました。6.2 Bash 起動ファイルBashのマニュアルでは、シェルが.bashrcを次のようにソースとして提供していることがわかります。インタラクティブシェル:
$ env FOO=bar bash -ic foo
bar
始めましょう。