如果在 bash 脚本中使用,`cd` 不起作用

use*_*456 5 bash cd-command

cd在 bash 脚本中使用它时我不能再使用了

[~/Downloads] # cat cd-backward
#!/bin/bash
cd ..

[~/Downloads] # ./cd-backward
[~/Downloads] #
Run Code Online (Sandbox Code Playgroud)

我应该移到~最后一行。

cd奇怪地在终端中完美运行。bash -c 'cd Download例如,当我跑步时也没有任何反应。

Ark*_*zyk 9

每个脚本都在自己的subshell. 中执行,这是一个单独的进程,无法修改其父工作目录。使用写入文件的脚本更改工作目录的唯一方法是使用.or source(它们是等效的)获取它,如下所示:

$ . cd-backward
Run Code Online (Sandbox Code Playgroud)

或者

$ source cd-backward
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,您甚至不需要shebang( #!/bin/bash) 在脚本的顶部。