当前位置: 技术问答>linux和unix
程序中如何使用setenv或者export配置环境变量在当前shell生效
来源: 互联网 发布时间:2016-02-20
本文导语: 各位好, 有一个问题一直不甚了了。我写了一个小程序,里面设置了setenv()或者system(export),但是如何让它在当前shell中生效呢。 比如: #include main(){ setenv("PA", "aa",1); } 生成一个 test 可执行文件,运行中是可以读...
各位好,
有一个问题一直不甚了了。我写了一个小程序,里面设置了setenv()或者system(export),但是如何让它在当前shell中生效呢。
比如:
#include
main(){
setenv("PA", "aa",1);
}
生成一个 test 可执行文件,运行中是可以读出环境变量,但是运行完之后,在当前的shell中已经没有这个变量了。
我不是很了解程序运行的原理, 是否每次执行程序,都会新增一个子shell,等退出就没了呢?
有一个问题一直不甚了了。我写了一个小程序,里面设置了setenv()或者system(export),但是如何让它在当前shell中生效呢。
比如:
#include
main(){
setenv("PA", "aa",1);
}
生成一个 test 可执行文件,运行中是可以读出环境变量,但是运行完之后,在当前的shell中已经没有这个变量了。
我不是很了解程序运行的原理, 是否每次执行程序,都会新增一个子shell,等退出就没了呢?
|
程序是当前shell的子进程,在程序中setenv不会影响(也无法影响)到当前shell的环境变量。
|
shell设置环境变量,只对该shell有用,shell退出,环境变量恢复原来样子
|
楼上两位的回答很正确。本质上是因为在shell命令行下执行一个程序是在fork一个进程。子进程不会改变父进程的环境。所以export, setenv,还有C语言的setenv()函数本质上都只会改变当前进程的环境变量。
不过通常解决楼主问题的一个方法是用source命令或. 执行这个脚本,比如 # source xxx.sh或 . xxx.sh,这样脚本里的export命令可以改变当前shell的环境变量。可以试一下。
不过通常解决楼主问题的一个方法是用source命令或. 执行这个脚本,比如 # source xxx.sh或 . xxx.sh,这样脚本里的export命令可以改变当前shell的环境变量。可以试一下。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。