使用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
时返回它,但我想将字符串变量存储在其中。怎么做?
答案 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 -
有用