Bash one-liner 临时附加链接命令的路径而不需要额外的 bash 调用?

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)

我可以临时修改PATHmyprog按名称调用,如下所示:

$ 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)

cuo*_*glm 7

如何使用子shell:

$ (PATH="$PATH:$(readlink -f prog)"; myprog && myprog)
YES
YES
Run Code Online (Sandbox Code Playgroud)