如何将目录更改为存储在变量bash中的路径

时间:2017-12-05 11:43:56

标签: linux bash unix

我正在尝试将CD更改为存储在变量中的路径。变量从存储在文件中的文本中获取其值。

这将获取文本文件中的值:

devdir=$(<\$HOME/devdir.txt)
cd $devdir

文本文件中包含文字:$HOME/bin

我得到的错误是:

/bin/dev: line 41: cd: $HOME/bin: No such file or directory

与手动输入变量相比,这是尝试使用变量的结果:

screen shot of text so you can't copy/paste it

更新: 这是Bash的片段,给出了fabiotk给出的改进,当它在脚本中时似乎没有结果,但是当它在cmd窗口中运行时工作正常...... Snippet

到目前为止,这是整个脚本:script 这是我自己运行给定的行,然后运行脚本显示它在内部不起作用:enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个:

cd $(eval "echo \"$(cat $HOME/devdir.txt)\"");

或:

eval "cd \"$(cat $HOME/devdir.txt)\"";

它将更改您正在运行的script会话中的目录。如果您运行./script,则会赢得cd外部

答案 1 :(得分:0)

$HOME的价值未得到扩展。如果你想扩展它,另一个答案中发布的eval可能有所帮助;但是如果可以的话,我们通常希望避免eval,特别是如果你只需要扩展这个特定的变量。

devdir=$(sed "s%^\$HOME/%$HOME/%" $HOME/devdir.txt)