用pwd打击脚本尴尬

时间:2013-09-24 00:49:34

标签: bash cd pwd

使用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/

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

3 个答案:

答案 0 :(得分:30)

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

为变量使用不同的名称

例如:

MYPWD=${PWD}  #or MYPWD=$(pwd)
cd /etc/nginx/sites-enabled/
cd $MYPWD

答案 1 :(得分:3)

尝试:

PWD=`pwd`

或者:

PWD=$(pwd)

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

CURRENT_BASENAME=$(basename $(pwd))  

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

答案 2 :(得分:0)

您可能还会发现 cd - 有用