【发布时间】:2011-10-04 13:55:39
【问题描述】:
我需要编写一个脚本来提取指定位置的 tar。
我做了一些简单的事情,比如:
cp test.tar /var/www/html
cd /var/www/html
tar xvf test.tar
如果我手动执行命令一切正常。如果我将它们保存在 .sh 中然后使用 #bash script.sh,我会收到以下错误“:不是目录 cd:/var/www/html”。知道为什么吗?
你的时间。
注意:我在虚拟机(CentOS 5.5)上尝试了脚本版本,脚本运行良好,问题出现在我想使用它的真机上(我使用相同的 OS 磁盘映像,配置与虚拟机...这对我来说真的很奇怪)。
补充:我也尝试调用类似 service mysqld start... 这也失败了,说一个目录不存在(如果我手动运行它仍然有效。)。
【问题讨论】:
-
如果 'html' 不存在,复制命令会将你的 test.tar 重命名为 'html'。确保它实际上是一个目录,而不是文件的副本。
-
您是否有机会以其他用户身份运行脚本?尝试在脚本顶部添加“whoami”和“ls -la /var/www”,并将它们提供的输出与直接从命令行运行它们时得到的输出进行比较。
-
我解决了这个问题(任何人都可以添加这个作为答案吗? - 这很有趣)。我在使用 centos 操作系统的 Windows 上运行的虚拟机上创建了脚本,Windows 中的输入是“\r\n”,而 linux 中的输入是“\n”。该脚本在 vm 上工作,因为 enter 的代码是正确的,而在第二台计算机上,使用本机 linux 它是不正确的。我在 linux 上创建了完全相同的脚本,一切都恢复正常;)。注意... mkdir 部分有效,因为我使用了另一个在 linux 上编写的简化脚本。
标签: linux bash shell centos cd