在 Shell 脚本里,如何在脚本的运行过程中,马上应用新的$PATH 环境变量?
source link: https://www.v2ex.com/t/844032
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
CentOS7
如:
testsh:sh 内容
sed -i '$a\export PATH="$PATH:/usr/local/mysql/bin:/root"' /etc/profile
export PATH="$PATH:/usr/local/mysql/bin:/root"
# 上面是添加了新环境变量
# 以下此命令,需要具有环境变量 /usr/local/mysql/bin 在 PATH 里
# 但是在 shell 里,似乎上面的 export PATH 是没有应用上的,
# 请问应该如何马上起效呢?
/usr/local/mysql/bin/mysql_secure_installation
duke807 16 小时 48 分钟前 via Android
本來就是立即生效
uti6770werty 16 小时 45 分钟前
export PATH="$PATH:/usr/local/mysql/bin:/root"
这条在 shell 的运行过程中,确实没有应用上。。。
stephenyin 16 小时 45 分钟前 1
uti6770werty 16 小时 20 分钟前
stephenyin 16 小时 14 分钟前
libook 15 小时 44 分钟前
Shell 会使用 PATH 环境变量的值从左到右每个目录查找是否有相应的指令文件存在,你原$PATH 拼在左边就会被先搜索,拼在右边就会被后搜索,搜索到第一个匹配的项就停止搜索。
你可以做个试验:
cd /tmp
mkdir a
mkdir b
echo "echo a">a/e
echo "echo b">b/e
chmod +x a/e
chmod +x b/e
export PATH=/tmp/a:$PATH:/tmp/b
然后你执行 e ,看输出的是 a 还是 b 。
你拼左侧不起作用可能是左侧的目录中已经存在 mysql_secure_installation 这个名称的文件了。
想要检查某个指令当前在 PATH 环境变量中的位置,可以用 which 指令,如`which mysql_secure_installation`。
diggzhang 15 小时 38 分钟前
```shell
#argumaents 1=abs_file_path
function export_from_file() {
while read LINE; do export "$LINE"; done < $1
}
export_from_file /path/to/envfile
```
MiketsuSmasher 14 小时 23 分钟前
`export PATH=<custom path>:$PATH`
veightz 14 小时 18 分钟前
tedding 8 小时 2 分钟前
NODE=$HOME/.nvm/versions/node/v16.14.2
export PATH=$NODE/bin:$PATH
cd $ProjectPath
npm run start:prep
不同项目的 node 版本不同 我是用 shell 脚本 执行的。。。因为我也记不住哪个项目对应哪个版本
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK