PATH 变量无法在 shell 函数中修改

PATH 变量无法在 shell 函数中修改

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

相关内容