即使路径正确,shell 脚本 cd 也会失败
我需要编写一个脚本来在指定位置提取 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)上尝试了脚本版本,脚本工作正常,问题发生在我想使用它的真实机器上(我使用了与虚拟机相同的操作系统磁盘映像,相同的配置。 ..这对我来说真的很奇怪)。
补充:我还尝试调用诸如 service mysqld start 之类的东西...这也失败了,说目录不存在(如果我手动运行它仍然可以工作。)。
I need to do a script to extract a tar at a specified location.
I did something simple like:
cp test.tar /var/www/html
cd /var/www/html
tar xvf test.tar
If I execute the commands by hand everything is OK. If I save them in a .sh then use #bash script.sh, I get the following error ": Not a directory cd: /var/www/html". Any ideea why?
Ty for your time.
Notes: I tried the script version on a virtual machine (CentOS 5.5) and the script worked fine, the problem occurs on the real machine where I want to use it (I used same OS disk image, same configurations as on the virtual machine... this makes it really really odd for me).
Added: Also I try invoking something like service mysqld start... this also fails saying that a dir doesn't exist (still if I run by hand it works.).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我解决了这个问题 - 这很有趣)。
我在带有centos操作系统的Windows虚拟机上创建了脚本,Windows中的输入是“\r\n”,而Linux中的输入是“\n”。
该脚本在虚拟机上运行,因为输入的代码是正确的,而在第二台计算机上,使用本机 Linux 时,它是不正确的。我在 Linux 上创建了完全相同的脚本,一切都恢复正常;)。
注意... mkdir 部分之所以有效,是因为我使用了另一个在 Linux 上编写的简化脚本。
I solved the problem - it is quite interesting).
I created the script on a virtual machine running on windows with a centos os, the enter in windows is "\r\n" while in linux is "\n".
The script worked on the vm because the code for enter was correct, while on the second computer, with native linux it was incorrect. I created exactly the same script on linux and everything went back 2 normal ;).
Note... the mkdir part worked because I used another, simplified script written on linux.
在相关说明中,我发现“~”字符在 bash 中似乎不起作用,因此如果您正在使用它,请尝试将其替换为完整路径。
On a related note, I have found that the "~" character does not seem to work in bash, so if you are using that, try replacing it with the full path.
看起来您的
cp
可能正在将 test.jar 复制到 www 目录下的 file html 中。在尝试 cp 之前,请确保 html 存在并且是一个目录。It looks like your
cp
might be coping test.jar to the file html under the www directory. Make sure that html exists and is a directory before you try to cp.