joh*_*717 1 shell bash path shell-script
我创建了一个 shell 脚本,它将检查PATH. 如果没有,那么它将将该值添加到PATH环境变量中。
根据echo $PATHshell 脚本内的运行,已成功添加。但是当我尝试echo $PATH在命令行中运行时..它没有反映所做的更改。
这是我的代码:
#!/bin/bash
postgresPath="/opt/PostgreSQL/9.2/bin"
echo "Checking PATH env.."
[[ ":$PATH:" != *"$postgresPath"* ]] && export PATH="${PATH}:$postgresPath"
echo $PATH
Run Code Online (Sandbox Code Playgroud)
该脚本在其自己的环境中运行。它不会影响其父 shell(从中启动脚本)的环境,即$PATH脚本中的更改不会$PATH在交互式 shell 中发生更改。
一个小例子:
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
$ ( PATH="hello"; echo "$PATH" )
hello
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
export(如果我在子 shell 中再次使用该变量并不重要,PATH因为它已经导出)
.我建议使用或获取脚本source,这将在与当前 shell 相同的环境中执行其中的命令,或者将脚本转换为 shell 函数。