14

我在使用 bash 脚本时遇到了一个奇怪的问题。这里是:

PWD=${pwd}
# several commands
cd /etc/nginx/sites-enabled/
# more commands
cd $PWD
# I expect that I returning to my directory, 
# but $PWD contains current dir - /etc/nginx/sites-enabled/

这种行为有点懒惰。$PWDstores 命令,它计算当前目录并在我们调用的那一刻返回它$PWD,但我想将字符串变量存储在其中。怎么做?

4

3 回答 3

35

PWD 是一个环境变量,在您更改目录时会更改。

为变量使用不同的名称,

例如:

MYPWD=${PWD}  #or MYPWD=$(pwd)
cd /etc/nginx/sites-enabled/
cd $MYPWD
于 2013-09-24T00:58:27.363 回答
3

尝试:

PWD=`pwd`

或者:

PWD=$(pwd)

两个表达式都将执行pwd命令并将命令输出存储在 shell 变量 PWD 中。网络上有很多关于何时使用每种样式的讨论。我记得的一点是“$(cmd)”方法允许嵌套命令,例如

CURRENT_BASENAME=$(basename $(pwd))  

编辑 - 我突然想到 PWD 是一个内置的 shell 变量,它总是扩展到当前工作目录。

于 2013-09-24T00:53:52.893 回答
0

您可能还会发现 cd - 有用

于 2020-02-07T16:17:21.063 回答