1
kaneg 2018-04-12 17:06:52 +08:00 via iPhone
bash 文件例如 myshell.sh 中写 export abc=123 这样的变量定义,然后在调用的时候 source 这个 bash 文件:source myshell.sh
|
2
hyq 2018-04-12 17:11:36 +08:00
1. 用 source,source env_setup.sh
2. direnv,在进入某个目录时,自动设置环境变量 |
3
forcecharlie 2018-04-12 17:14:56 +08:00
你的 make 命令应当在那个 shell 脚本中执行,或者在终端中手动的 source 这个 shell 脚本(/path/to/sh 或者 sh -c 这样都是不行的),然后再执行 make。
在进程中修改环境变量只对进程本身或者其子进程有效。 修改系统环境变量设置需要重新启动 shell。在 Windows 中可以监听 WM_SETTINGCHANGE 消息。 |
4
vincenttone 2018-04-12 17:30:49 +08:00
莫非是需要 source 或者.命令?
|
5
z0z OP @kaneg
@hyq @forcecharlie @vincenttone 你们说对了,是需要使用 source 或是.来实现的。当时发完帖子后就下班了,路上一直在想,恍惚记得以前好像用过类似的方法,到家吃完饭之后恍然大悟,原来是与脚本无关,而是需要使用. 或 source 来导出环境变量。导出后使用 env 就可以看到了。 多谢楼上各位了。 可以结帖了。 |
6
z0z OP 再来补充一下:
source filename 其实只是简单地读取脚本里面的语句依次在当前 shell 里面执行,没有建立新的子 shell。那么脚本里面所有新建、改变变量的语句都会保存在当前 shell 里面。 而使用 shell 或是 bash 来执行脚本,则会先创建一个子进程,然后子进程里运行脚本内容,脚本内容结束,则子进程也结束,一切又回到原点。 |
7
zjb861107 2018-04-12 23:08:41 +08:00 via iPhone
.env ?
|