0

我们正在尝试做的是调用source bash_profile以重新加载 bash_profile 文件。该脚本抓取一个人的 bash_profile 并将其加载到一个人的计算机上。问题是source bash_profile不会在 ruby​​ 脚本之外持续存在。脚本结束后,终端看起来和之前一样。我们怎样才能使它source bash_profile在 ruby​​ 脚本之外持续存在?

4

1 回答 1

0

通常bash_profile会修改 bash 环境(安装函数、别名、变量、readline 绑定等),实在没有办法修改父 bash 进程的环境。

因此,您能做的最好的事情是通过exec输入一个新的 bash 来结束 ruby​​ 脚本,指定-l(or --login) 选项以使其成为登录 shell,以便它从 sourcing 开始bash_profile。(您也可以通过设置参数的第一个字符来做到这一点-,通常将其设置为-bash。)

如果您可以控制 ruby​​ 脚本的启动方式,您可能会导致它被exec编辑,以便它替换父 bash 进程。这将使进程树更清晰。

于 2013-11-08T03:51:48.837 回答