cp 在脚本中不起作用,但在终端中起作用

Łuk*_*oda 7 shell bash quoting

现在,这是一个奇怪的问题,我有这样的脚本:

CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
RESOURCES_PATH="${CWD}/resources"

PROJECT_NAME="something"

DRUSH_ALIASES_EXAMPLE_PATH="${RESOURCES_PATH}/example.aliases.drushrc.php"
DRUSH_ALIASES_PATH="~/.drush/${PROJECT_NAME}.aliases.drushrc.php"

cp ${DRUSH_ALIASES_EXAMPLE_PATH} ${DRUSH_ALIASES_PATH}
echo "cp ${DRUSH_ALIASES_EXAMPLE_PATH} ${DRUSH_ALIASES_PATH}"
Run Code Online (Sandbox Code Playgroud)

当我尝试运行这种脚本时,出现错误:“cp:无法创建常规文件“~/.drush/something.aliases.drushrc.php”。没有这样的文件或目录”

但有趣的是,如果我将“echo”的输出复制并直接粘贴到终端中,该命令将正常工作。我很困惑,有什么想法上面的脚本有什么问题吗?

Zel*_*lda 12

尝试使用$HOME/.drush...替代~/.drush...."~"似乎并没有扩大到你的home目录。

  • 是的,因为`~` 在引用时不会扩展。当然,`cp` 的参数也确实应该被引用,以避免出现意外。 (6认同)