追加のbash呼び出しなしでリンクされたコマンドに一時的にパスを追加するには、Bashを1行で作成しますか?

追加のbash呼び出しなしでリンクされたコマンドに一時的にパスを追加するには、Bashを1行で作成しますか?

考えてみてください:

$ cd /tmp
$ echo "echo YES" >> prog/myprog
$ chmod +x prog/myprog
$ prog/myprog
YES
$ myprog
myprog: command not found

PATH次のように名前で呼び出すように一時的に変更できますmyprog

$ PATH="$PATH":$(readlink -f prog) myprog
YES

...しかし、この方法ではコマンドをリンクすることはできません。

$ PATH="$PATH":$(readlink -f prog) myprog && myprog
YES
myprog: command not found

...明らかに変更されたコンテンツPATHは2番目の呼び出しに伝播されませんでした。

私はこれができることを知っています:

$ PATH="$PATH":$(readlink -f prog) bash -c "myprog && myprog"
YES
YES

...しかし、追加の手順を呼び出す必要があり、さらにbash悪いことは引用する必要があります。

extraを呼び出すか引用する必要なく、1行にコマンドをリンクするために一時的にPATHに追加する方法はありますかbash?バックティックを試しましたが、うまくいきません。

$ PATH="$PATH":$(readlink -f prog) `myprog && myprog`
myprog: command not found

ベストアンサー1

サブシェルを使うのはどうですか?

$ (PATH="$PATH:$(readlink -f prog)"; myprog && myprog)
YES
YES

おすすめ記事