SetEnv
我在一个名为的文件中调用了一个名为的常用函数SetEnv
。
文件SetEnv
:
SetEnv()
{
export PATH=$PATH:$JAVA_HOME/bin
}
文件Script.sh
:
SetEnv
echo $PATH
运行时./Script.sh
,我看不到更新的路径。
请帮忙解决这个问题。
答案1
这是因为当您从终端运行脚本时,它不会在当前 shell 终端中运行,而是在子 shell 中运行。在此子 shell 中创建的变量、函数和别名只有该子 shell 的特定 bash 会话才知道。当该 shell 退出并且父级重新获得控制权时,所有内容都会被清除,并且脚本对 shell 状态所做的所有更改都将被遗忘。
为了防止这种情况,您可以使用以下命令在当前 shell 终端中获取脚本:
source Script.sh
或者简单来说:
. Script.sh #dot, space and the path to the script
此外,你Script.sh
看起来应该是这样的:
#!/bin/bash
source /path/to/SetEnv #if you want that your script to know about 'SetEnv' function.
SetEnv
echo $PATH
更多关于:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_01.html。