请教,无法在脚本中export系统环境变量的吗?
时间:2011-05-03
来源:互联网
RT。
比如我写了个脚本叫envset.sh, 想用它来set一些当前用户的系统环境变量。
我们登录入的那个终端是login shell,当运行envset.sh时,将会启动一个subshell来运行这个脚本。subshell是login shell fork出来的子进程。
subshell export的环境变量可以影响到它的子进程;但是却无法改变其父进程的环境变量,是这样对吗?
那么也就是说,如果我要改变当前用户的系统环境变量 -- 我无法通过执行一个脚本来做到这一点对吗?
当然,也许改变/etc/profile或者~/.bash_profile是能够做到改变用户的系统环境变量的? -- 可以吗?
即使可以通过/etc/profile或者~/.bash_profile这样的东西来改变系统环境变量,我也不想那么做 -- 因为我只是在某些时候想要设置它们而已。
这莫非意味着:一旦我要设置当前进程 -- 即login shell进程的环境变量,我就必须得在命令行一个一个的set?
如果我要set的环境变量有好几个甚至超过十个怎么办? ...
要命的是 -- 一旦登出login shell,其环境变量设置就不能再在另一个session使用了对吧?... 每次启动一个session就是launch一个login shell进程吧?
那么我每次启动一个新的session都要在命令行手动export环境变量?...
有没有能够通过执行脚本来改变系统环境变量的做法?有就最好了!
确实没有吗?好吧...那我应该改那个配置文件(/etc/profile之类的)比较好呢?/etc/profile我没权限改。当前用户的配置文件,改哪一个比较好点?
-- 我希望启动新的session时不需要 $ . ~/.xxxx 这样...
请达人指教~~~~~~~
作者: captivated 发布时间: 2011-05-03
作者: captivated 发布时间: 2011-05-04
- . /tmp/envset.sh
作者: Shell_HAT 发布时间: 2011-05-04
子shell自然无法做到了.
不过你可以用source命令,它是把其作为自身执行的一部分
作者: cjaizss 发布时间: 2011-05-04
子 ...
cjaizss 发表于 2011-05-04 09:02
哦...原来是这样... 我一直不知道source命令和一般的执行脚本有什么差别... 多谢了!
作者: captivated 发布时间: 2011-05-04
一直在用souce...
只知道有的时候应该用source...
竟然是在自己碰到这个问题之后才真正明白source和一般执行脚本的差别...
太惭愧了... 俺面壁去...
作者: captivated 发布时间: 2011-05-04
作者: zooyo 发布时间: 2011-05-04
一直在用souce...
只知道有的时候应该用source...
竟然是在自己碰到这个问题之后才真正 ...
captivated 发表于 2011-05-04 09:20
source的作用就在于把另外一个文件当成本身shell一部分来执行,区别于子shell,所以,既然是自身的一部分,source一个文件,里面所修改的任何shell变量都是自身的变量了
作者: cjaizss 发布时间: 2011-05-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28