为什么 .sh 文件中的“cd -”会打印地址

为什么 .sh 文件中的“cd -”会打印地址

我使用“cd -”在文件夹之间切换。例如:

cd /etc/                                                                                                                          
cd -   

但是为什么“cd -”会打印地址(像 pwd)?我怎样才能阻止它打印地址?

答案1

SUS4 说

当使用-作为操作数时,这应等同于以下命令:

    cd "$OLDPWD" && pwd

它将改变到上一个工作目录然后写入其名称。

因此,如果您不想打印一半的行为,只需自己执行第一部分:

cd "$OLDPWD"

或者波浪符号扩展等价物

cd ~-

通常,如果您需要这个,pushd/popd是一个更好的选择,尽管便携性较差。

答案2

只需将标准输出重定向到黑洞即可

cd - > /dev/null

答案3

最简单的方法就是不使用它。在单独的 shell 中运行命令:

(cd /etc/; ... )

这不会改变“主”shell 的当前工作目录。这通常比使用更强大,OLDPWD因为您可以cd在此处使用许多命令,例如

(cd /etc; ... ; cd /tmp; ... )

相关内容