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