我有一个在我的Ubuntu 12.04 LTS服务器上运行的shell脚本:
cd /var/www/srv
但是,出于某种原因,当我运行它时,它会说:./start.sh: 1: cd: can't cd to /var/www/srv
目录存在,它以root身份运行,因此不存在权限问题。为了增加特性,当我在终端中运行代码时,它可以工作。
先谢谢!
答案 0 :(得分:2)
这是一个典型的回车问题,是由在Windows / DOS编辑器中创建shell脚本引起的。
你的问题:
$ cat start.sh
cd /
$ ./start.sh
cd: 1: can't cd to /
您的诊断:
$ cat -v start.sh
cd /^M
$ shellcheck start.sh
In start.sh line 1:
cd /
^-- SC1017: Literal carriage return. Run script through tr -d '\r' .
你的修复:
$ tr -d '\r' < start.sh > fixed.sh
$ chmod +x fixed.sh
$ ./fixed.sh
(no errors)