如何使 shell 脚本所做的更改永久生效?
How can I make the changes done by a shell script permanent?
如何使 shell 脚本所做的更改成为永久性的,即使脚本终止时也是如此?
例如:script.sh
#!/bin/sh
cd dir2
pwd
使用这个脚本:
cd dir1
script.sh
pwd
我得到:
dir2
dir1
如何在脚本终止后留在目录 2 中?
script.sh
在子进程中执行("subshell"),在子进程中改变工作目录不会影响父进程的工作目录。
要用类似于 "a script" 的内容更改目录,您至少有 3 种可能性:
- 设置别名;适合与 shell 进行互动工作;据我了解,不是你的情况;
- 写一个 shell 函数而不是
script.sh
,看一个例子 here;
- 运行
script.sh
在当前进程中使用 source
或简单地 .
最后一个示例:
source script.sh
或
. script.sh
有关 source
命令的更多信息 here。
还有另一种非常奇怪的可能性,请参见此处:change working directory of caller。不过,不要太认真,对程序员来说就像一个非常令人讨厌的笑话。
如何使 shell 脚本所做的更改成为永久性的,即使脚本终止时也是如此?
例如:script.sh
#!/bin/sh
cd dir2
pwd
使用这个脚本:
cd dir1
script.sh
pwd
我得到:
dir2
dir1
如何在脚本终止后留在目录 2 中?
script.sh
在子进程中执行("subshell"),在子进程中改变工作目录不会影响父进程的工作目录。
要用类似于 "a script" 的内容更改目录,您至少有 3 种可能性:
- 设置别名;适合与 shell 进行互动工作;据我了解,不是你的情况;
- 写一个 shell 函数而不是
script.sh
,看一个例子 here; - 运行
script.sh
在当前进程中使用source
或简单地.
最后一个示例:
source script.sh
或
. script.sh
有关 source
命令的更多信息 here。
还有另一种非常奇怪的可能性,请参见此处:change working directory of caller。不过,不要太认真,对程序员来说就像一个非常令人讨厌的笑话。