有没有一些可以返回 shell 的完整路径的函数?
有没有一些完整的路径函数可以使用?
你可以用
new_path=$(eval cd "$old_path"; pwd)
这个命令行来实现。如果你想要解析符号链接,你也可以使用pwd -P
。如果你在old_path
中使用$HOME
而不是~
,可以更加方便。然后你就不需要eval
了。
或者使用pwd -P
。那么eval
就是不必要的了。
eval
总是需要执行tilde扩展。
幸运的是,我的bash
没有读取这个注释,所以它对此并不知情。如果我输入echo $(cd ~/mp3; pwd -P)
,我会得到/home/glglgl/mp3
。如果我将它放入一个变量中,同样的事情会发生。
它是否会改变当前工作路径?
不,它不会。你正在运行一个不同的命令,我建议你实际上将它放在带引号的变量中。如果foo="~"; cd $foo
在你的bash中工作,那么它是有问题的。问题在于,在使用$foo
时,tilde扩展发生在参数扩展之前。
不,它不会改变当前工作目录,因为cd
是在一个子shell中运行的。