Linux 在shell脚本中更改目录不起作用

Linux 在shell脚本中更改目录不起作用,linux,shell,Linux,Shell,在linux中,我一直在修改shell脚本中的目录 #!/bin/sh cd /driver 以上内容不会更改目录。 Shell在自己的上下文中运行,因此无法为linux终端提供已更改的驱动器(转换为驱动程序) 但是如果我给 光驱 ls 它给出了驱动程序目录中的ls的正确输出,再次从驱动程序目录中输出 有人能帮我把实际更改路径的终端转换成驱动程序吗。如果使用运行脚本,它将更改目录 /scriptname 您正在打开执行脚本命令的子shell。更改该子shell中的目录不会影响从中调用脚本的sh

在linux中,我一直在修改shell脚本中的目录

#!/bin/sh
cd /driver
以上内容不会更改目录。 Shell在自己的上下文中运行,因此无法为linux终端提供已更改的驱动器(转换为驱动程序)

但是如果我给 光驱 ls 它给出了驱动程序目录中的
ls
的正确输出,再次从
驱动程序目录中输出


有人能帮我把实际更改路径的终端转换成驱动程序吗。如果使用运行脚本,它将更改目录

/scriptname

您正在打开执行脚本命令的子shell。更改该子shell中的目录不会影响从中调用脚本的shell的工作目录。如果你打字的话

source./scriptname


您应该会得到所需的结果。

设置目录后,您可以在脚本中启动shell或终端

因此:

文件:驱动程序,记住设置x权限

#!/bin/bash
cd /driver
bash
运行驱动程序将生成另一个shell提示符

当前目录现在是驱动程序


键入“exit”或control-D将返回到旧shell及其以前的目录。

您的脚本是一个可执行文件:

#!/bin/sh
cd /driver
删除
#/bin/sh

cd /driver

为了验证上述问题的根本原因,您可以执行以下操作

创建一个脚本,如-

read a
echo "You entered : $a"
保存它(比如script.sh)并根据需要更改权限

在同一个选项卡中,运行“ps”命令并注意外壳pid(比如p1)

现在运行脚本(即../script.sh)

脚本将请求输入,但不提供输入。现在在另一个选项卡中运行类似“ps-ef | grep pts”的东西。 在这里你会发现有两个shell进程。您还有一个外壳,其ppid等于上一个外壳的pid,即p1

因此,基本上每个shell脚本调用都会创建一个新的进程,从而创建一个新的上下文

希望这有帮助。

可能重复的