Shell &引用;CD";在ubuntu中不工作,即使使用root

Shell &引用;CD";在ubuntu中不工作,即使使用root,shell,ubuntu,terminal,root,cd,Shell,Ubuntu,Terminal,Root,Cd,我有一个shell脚本,在我的Ubuntu 12.04 LTS服务器上运行如下: cd /var/www/srv 但是,出于某种原因,当我运行它时,它会显示:/start.sh:1:cd:cannotcd to/var/www/srv 该目录存在,并且以root用户身份运行,因此没有权限问题。另外,当我在终端中运行代码时,它工作正常 提前感谢 这是一个典型的回车问题,由在Windows/DOS编辑器中创建shell脚本引起 您的问题: $ cat start.sh cd / $ ./star

我有一个shell脚本,在我的Ubuntu 12.04 LTS服务器上运行如下:

cd /var/www/srv
但是,出于某种原因,当我运行它时,它会显示:
/start.sh:1:cd:cannotcd to/var/www/srv

该目录存在,并且以root用户身份运行,因此没有权限问题。另外,当我在终端中运行代码时,它工作正常


提前感谢

这是一个典型的回车问题,由在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)
$tr-d'\r'fixed.sh
$chmod+x fixed.sh
$./fixed.sh
(无错误)

您如何知道它正在以root用户身份运行?该目录的所有权和权限是什么?这是否适用于其他目录?您的脚本的实际内容是什么?请注意,在解释脚本的shell退出后,更改脚本中的目录不会产生持久的影响。@ChrisStratton很好,因为我以root用户身份运行它。www数据是目录的所有者。是的,我知道shell脚本不会对终端产生任何影响,但我的兴趣在于为什么我不能cd到错误。发布脚本的内容以及目录的实际所有权和权限,如ls-l提供的