【问题标题】:Cd in shell script not workingshell脚本中的cd不起作用
【发布时间】:2012-02-29 23:11:20
【问题描述】:

首先,我对 shell 脚本非常陌生。我正在尝试编写一个脚本,该脚本接受一个参数,然后将文件夹复制到使用该参数命名的不同目录中。这是我拥有的当前代码:

#!/bin/sh
cd /var/www/html/fbplugin/chrome
sudo mkdir temp/$1
sudo cp -rf "/var/www/html/fbplugin/chrome/fbplugin" "/var/www/html/fbplugin/chrome/temp/$1"

当我运行此代码时,它显示无法 cd 到 /var/www/html/fbplugin/chrome。我不确定它为什么这么说,因为我知道该目录存在。我直接复制了这条线,它在终端中工作。如果有人可以帮助我,那就太好了。

如果为了运行脚本很重要,我正在输入“sh build.sh”

【问题讨论】:

  • 既然你有#!/bin/sh,那么正常运行脚本的方式是./build.shsh build.sh 忽略 shebang。但是试试bash build.sh;我不指望它能解决问题,但我发现它会给出更具体的错误信息。
  • 当运行 bash build.sh 我得到以下信息:没有这样的文件或目录www/html/fbplugin/chrome
  • 根据您接受的答案,问题是您在终端输入的脚本和命令是由不同的用户执行的。供将来参考,这是关键信息,在您的问题中提及它会节省一些时间。
  • 我真的很抱歉,就像我说我对 shell 脚本很陌生,所以我不知道这些信息是如此有价值。下次我一定会这样做。

标签: bash shell cd


【解决方案1】:

如果该目录确实存在,那么您一定是使用不同的用户(cron、网络服务器等)执行了该脚本。

检查该目录的权限。

【讨论】:

  • 这有效,我没有使用 chmod 设置正确的权限
【解决方案2】:

我不知道你为什么会收到关于 cd 的错误,但看起来你可以只使用绝对路径。这将解决脚本正常工作的更大问题。

【讨论】:

  • 是的,我已经尝试将它们全部设为绝对值,如果 cd 不会给我这个错误,它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多