gpt4 book ai didi

bash - 如何从脚本结束后仍然存在的 bash 脚本生成 bash 子 shell

转载 作者:行者123 更新时间:2023-11-29 09:48:42 27 4
gpt4 key购买 nike

我想从 bash 脚本生成一个 bash 子 shell,它允许我初始化环境变量并进行一些尝试,以便在脚本结束时用户位于具有初始化环境变量的子 shell 中。

通过测试,我发现如果我在脚本中有指令 /bin/bash,则子 shell 会生成,并且当脚本结束时用户位于子 shell 中。如果我执行 exit,则子 shell 终止并且用户返回到父 shell。

我现在希望能够初始化环境变量并根据脚本中给出的参数在子 shell 中执行一些任务。

我怎样才能做到这一点?

最佳答案

exec是你要找的

$ cat reshell.sh
#!/bin/bash
export MY_ENVIRONMENT=foo
chdir /home/bar
exec $SHELL

exec 将当前运行的脚本替换为继承脚本环境的新 shell。这仍然是您从中运行它的外壳的从属外壳,但它只有一层深;例如:

$ pwd 
/home/chmike
$ ./reshell.sh
$ pwd
/home/bar
$ exit
$ pwd
/home/chmike

使用 exec $SHELL 而不是 exec/bin/bash 允许脚本调用用户首选的 shell,以防它不是 bash。

关于bash - 如何从脚本结束后仍然存在的 bash 脚本生成 bash 子 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com