sda*_*aau 5 bash path environment-variables
考虑一下:
$ cd /tmp
$ echo "echo YES" >> prog/myprog
$ chmod +x prog/myprog
$ prog/myprog
YES
$ myprog
myprog: command not found
Run Code Online (Sandbox Code Playgroud)
我可以临时修改PATH
为myprog
按名称调用,如下所示:
$ PATH="$PATH":$(readlink -f prog) myprog
YES
Run Code Online (Sandbox Code Playgroud)
...但是我不能用这种方法链接命令:
$ PATH="$PATH":$(readlink -f prog) myprog && myprog
YES
myprog: command not found
Run Code Online (Sandbox Code Playgroud)
...显然修改后的PATH
显然没有传播到第二次调用。
我知道我可以这样做:
$ PATH="$PATH":$(readlink -f prog) bash -c "myprog && myprog"
YES
YES
Run Code Online (Sandbox Code Playgroud)
...但是我必须调用一个额外的bash
过程 - 更糟糕的是,我必须引用。
有没有什么方法可以将单行中的链接命令临时附加到 PATH 中,而不必调用 extrabash
和引用?尝试反引号,它们不起作用:
$ PATH="$PATH":$(readlink -f prog) `myprog && myprog`
myprog: command not found
Run Code Online (Sandbox Code Playgroud)
如何使用子shell:
$ (PATH="$PATH:$(readlink -f prog)"; myprog && myprog)
YES
YES
Run Code Online (Sandbox Code Playgroud)