/etc/profile 查了很多资料,都说这个是在系统启动shell之后生效的。
那么我关机了,然后按下开机键,这个时候linux启动成功了吧。假如我启动linux之后就会启动Nginx,然后访问80端口会读取环境变量 PARAMS="hello",我不登陆linux,我访问Nginx的80端口,此时这个环境变量会生效吗?
我猜测不会,然后我还觉得我打开一个shell之后,再请求这个环境变量也是没有的。
不知道理解的对不对,求大佬指教
/etc/profile 查了很多资料,都说这个是在系统启动shell之后生效的。
那么我关机了,然后按下开机键,这个时候linux启动成功了吧。假如我启动linux之后就会启动Nginx,然后访问80端口会读取环境变量 PARAMS="hello",我不登陆linux,我访问Nginx的80端口,此时这个环境变量会生效吗?
我猜测不会,然后我还觉得我打开一个shell之后,再请求这个环境变量也是没有的。
不知道理解的对不对,求大佬指教
你说的那些环境变量都需要开启shell才行,开机启动的程序是最高级别的程序,其它所有的shell和子shell都是它的子进程,他们的环境变量应该在/etc/systemd/system.conf中设置,分享给你个链接https://blog.51cto.com/u_1403...
1 回答1.2k 阅读✓ 已解决
3 回答869 阅读✓ 已解决
1 回答720 阅读✓ 已解决
1 回答1.5k 阅读
1 回答865 阅读✓ 已解决
2 回答650 阅读✓ 已解决
1 回答704 阅读
你理解的没错。/etc/profile是shell加载的,shell启动的进程继承父进程的环境,才会读到shell加载的环境变量。而配置成服务如systemd或upstart之类的方式启动的进程继承自init程序,它不会加载profile。想让这样的服务带环境变量启动,只能在服务配置或者服务启动脚本里改。