在 bash 脚本中使用带有“~”或“$HOME”的 cd 命令时遇到问题

Pan*_*dya 5 command-line bash scripts home-directory

我们知道~$HOME引用当前用户的主目录。(对我来说echo ~= echo $HOME= pandya)。

但是我不能在 bash 脚本中使用它。这是一个简单的示例脚本:

#!/bin/bash
echo -n "Enter Directory Path:"
read dir1
cd $dir1
Run Code Online (Sandbox Code Playgroud)

但是执行的时候报错No such file or directory如下:

$ ./script
Enter Directory Path:~/Desktop
./script: line 4: cd: ~/Desktop: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果/home/pandya使用而不是~,那么它正在工作。

同样的问题$HOME

因此,如何正确使用cd~$HOME在这样的bash脚本?

nux*_*nux 5

您可以使用eval命令解决此问题:

#!/bin/bash
echo -n "Enter Directory Path:"
read dir1
eval cd "$dir1"
Run Code Online (Sandbox Code Playgroud)

因为在您的代码中$dir1不会存储~/Desktop但它会存储/home/user/Desktop所以您可以使用 eval 命令。

这里了解Eval命令

  • 只是不要尝试输入`; rm -rf /` 作为路径。 (3认同)