0
在我的bash脚本中,我将某些内容更改为我的/etc/profile
,并且我做了source /etc/profile
,但脚本完成后,更改不会立即生效。例如:如何更改/ etc/profile立即生效内部脚本
#!/bin/bash
sudo echo "BLAHBLAH_HOME=/opt/BLAHBLAH" >> /etc/profile
source /etc/profile
echo $BLAHBLAH_HOME
根据输出的变化是在脚本的运行时间作出的,但如果我以后运行echo $BLAHBLAH_HOME
,变化不是有效的,我不得不再次source /etc/profile
。那么,即使在运行脚本之后,如何使更改生效?
那么,它们是完全独立的空间,并且不能互相影响?我必须再次从外部获取它以使其在全球范围内有效? – hakunami 2014-11-06 09:35:04
正确。当你启动脚本时,会创建一个新的独立进程,并在该环境中运行bash,并且您对该环境变量所做的任何更改都是该进程的本地进程,并在退出时死掉。然而,在脚本中,你也改变了永久文件系统中的一个项目(即'/ etc/profile'),并且如果你想让你当前输入的shell看到这个改变,你必须告诉它看看'/ etc/etc/profile' - 通过将它发送到你当前的shell(不是你在脚本中启动的那个)。 – 2014-11-06 09:38:35
他们是正确的。事实上,如果你通过“source yourscript.sh”运行你的脚本,它应该工作。 – 2014-11-06 10:00:12