考えてみてください:
$ 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