我想编写一个shell脚本,我在其中更改目录,然后在该目录中执行命令。为什么我不能改变目录?每当我这样做时它都不起作用:
#!/bin/bash
cd /something/something
我做错了什么? /丹尼尔
答案 0 :(得分:0)
运行shell脚本时,会创建一个新shell。因此,当shell脚本退出shell时,运行的脚本将被销毁,因此您将返回到当前的shell。这可能是一件好事,因为在一些shell脚本中你制作了大量的变量和那些你不想在脚本执行完毕后潜伏的东西。
由于shell脚本shell被吹走而且您返回原始shell,目录的更改将不会反映在您正在使用的交互式shell中。
有一个名为source
的命令,虽然它在当前shell中执行shell脚本,因此会在当前shell中cd
并在脚本中进行任何其他更改,直到退出当前shell
但是,如果在您使用的脚本中,在创建新shell时根本没有发生cd
,这可能是由于目录上的文件权限。如果某个目录的chmod -x
没有执行权限集,则无法cd
进入该目录,因为您需要在目录中执行权限才能进入该目录。