Thursday, January 15, 2009

解释性shell的环境变量的来源

登陆性的shell很明显, 会使用$HOME/.profile之类的文件, 这样shell就可以得到新的环境变量.

那么, 当一个shell为非登陆(作用解释器)的shell, 它的环境变量哪里来呢?

如下:
1. 父进程中继承
1. 脚本启动时的命令行.
1. 解释器启动时内置的环境变量(都为编程需要的, 与用户的变量不同)

因此, 在运行一个对环境变量有要求的脚本时, 首先要整清楚上面的来个来源:
1. 父进程有没有存在要求的环境变量
1. 能不能在启动脚本的时候指定.

例子说明上面的问题:
1. crontab中的PATH常常是使用crontab时碰到的问题, 为正确使用crontab去运行定时任务, 一般是设置它的PATH, 这样, crontab就是把这个环境变量继承给由它启动的子进程

2. 在脚本启动时指定环境变量也是常见的. 如:
jessinio@jessinio-desktop:/tmp$ sudo -u root HOME=/tmp -i
root@jessinio-desktop:/root# echo $HOME
/tmp

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.