如何使shell脚本所做的更改永久化?

时间:2015-04-15 22:12:11

标签: bash shell sh

即使脚本终止,如何使shell脚本完成的更改也是永久性的?

例如:script.sh

#!/bin/sh
cd dir2
pwd

使用此脚本:

cd dir1
script.sh
pwd

我明白了:

dir2
dir1

脚本终止后如何留在dir2?

1 个答案:

答案 0 :(得分:3)

script.sh在子进程(“subshel​​l”)中执行,更改子进程中的工作目录不会影响父进程的工作目录。

要使用看起来像“脚本”的内容更改目录,您至少有3种可能性:

  • 设置别名;适合与贝壳进行互动;根据我的理解,不是你的情况;
  • 编写shell函数而不是script.sh,请参阅示例here;
  • 使用script.sh或仅source
  • 在当前流程中运行.

最后一个例子:

source script.sh

. script.sh

更多关于source命令here

还有另一个非常奇怪的可能性,请看这里:change working directory of caller。不过,不要太认真,对程序员来说这是一个非常讨厌的玩笑。