我无法更改linux中shell脚本中的目录。
#!/bin/sh
cd /driver
以上内容不会更改目录。 Shell正在自己的上下文中运行,因此无法为linux终端提供更改的驱动器(进入驱动程序)
但如果我给
cd / driver
LS
它在ls
driver directory
的正确输出
任何人都可以帮助我获得实际更改路径(into driver)
的终端。
答案 0 :(得分:3)
如果您使用
运行脚本 ./scriptname
您正在打开执行脚本命令的子shell。更改该子shell中的目录不会影响您从中调用脚本的shell的工作目录。如果您输入
source ./scriptname
你应该得到理想的结果。
答案 1 :(得分:2)
执行“source script_name”。它将更改目录
答案 2 :(得分:1)
在设置目录后,您可以在脚本中启动shell或终端。
如此:
file:driver,记得设置x权限
#!/bin/bash
cd /driver
bash
运行驱动程序将生成另一个shell提示符。
当前目录现在是驱动程序。
键入“exit”或control-D将返回旧shell,其前一个目录。
答案 3 :(得分:1)
您的脚本是可执行文件:
#!/bin/sh
cd /driver
删除#!/bin/sh
cd /driver
答案 4 :(得分:0)
只是为了验证上述问题的根本原因,您可以执行以下操作
创建一个类似 -
的脚本read a
echo "You entered : $a"
保存(比如script.sh)并根据需要相应地更改权限。
在相同的选项卡中运行'ps'命令并记下shell pid(比如p1)。
现在运行脚本(即./script.sh)
脚本会询问输入但不提供输入。现在在另一个标签中运行像'ps -ef |这样的东西grep pts'。 在这里你会发现有两个shell进程。你还有一个shell,其ppid等于前一个shell的pid,即p1。
所以基本上每个shell脚本调用都会创建一个新进程,从而创建一个新的上下文。
希望这会有所帮助。