记一次环境变量失效问题

逸兴
逸兴
逸兴
57
文章
25
评论
2019-09-0611:33:08记一次环境变量失效问题已关闭评论 922字阅读3分4秒
摘要

操作系统中的每个命令,其实都是对应这个某个可执行文件。执行命令就是运行这个文件,而环境变量则是帮助系统找到这些文件。

偶然发现通过/etc/profile 中定义的 PATH 环境变量,竟然不生效了。

因为需要在一台数据库服务器上,新建一个从库,因为是安装的多实例,要用socket登录,觉得麻烦,所以加了个别名

alias my3306='mysql -uroot -p -S /data/3306/mysql.sock'

这样登录就很方便了,没想到登录时竟然报错:“ 命令找不到 ” ,第一反应就是没有环境变量,难道部署时没有配置?看了下环境变量:

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # 果然mysql的没有了

因为mysql 是编译安装的,所以就在/etc/profile 中添加了mysql的环境变量,检查了下/etc/profile , 添加环境变量的也还在

export PATH=/usr/local/mysql/bin:$PATH

没毛病啊,继续往下看,就发现了这个:

记一次环境变量失效问题

这是用来记录“终端会话的”,前面一篇文章有提到,用来记录终端会话内容的。因为最近只做了这么一次操作,推测原因应该就是这个了,先将这段注释,然后source /etc/profile 环境变量又回来了。

原因分析:

因为上面的记录会话部分,使用了exec,exec 命令并不启动新的进程执行script , 而是执行script 去替换当前的进程, 并清理了老进程的环境变量,也就是profile中前面定义的。 同时, exec 后面都不会执行了。

那么问题来了,既然已经清理了环境变量,那登陆后为什么还有上面的环境变量,虽然不完整。

这个问题,说来也是巧合,因为我为了每次登录都能自动打印 内存,cpu 信息,所以写了个获取信息的脚本,放到了/etc/profile.d/ (用户登录时,这个目录下的*.sh 文件都会被执行,关于这里 在profile中有定义,可以看下)下,这样每次登录都能显示信息:

记一次环境变量失效问题

在这个脚本中,又定义了环境变量,多亏当时写了这个,不然岂不是要用绝对路径了。

记一次环境变量失效问题

后来测试了下,的确就是这个环境变量。

解决方法:

既然如此,就好处理了,将PATH定义在其他路径里,所以在/etc/profile.d/加了个path.sh 所有的环境变量,都定义在这里。

记一次环境变量失效问题



https://www.hugbg.com/archives/85.html
逸兴
  • 本文由 发表于 2019-09-0611:33:08
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
自动更新SSL证书 默认分类

自动更新SSL证书

现在免费的SSL证书只有三个月有效期,有一个博客和图床都用的ssl证书到期需要重新签发,挺麻烦的。原本想着写个脚本通过阿里云的 OpenAPI 进行证书的签发和部署,但是偶然发现了 ACME 这个项目...
推导式、生成式与生成器 基础语法

推导式、生成式与生成器

推导式 概述 Python中的推导式是一种快速、简洁的数据结构创建方式,不需要手动创建数据结构中的每一个元素,类似于给出一个规律,python会根据这个规律自动填充数据结构。支持有列表推导式、字典推导...
CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾) 默认分类

CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾)

一、漏洞详情 Windows Server是由微软开发的操作系统系列,专为服务器环境设计,用于管理网络、数据存储和应用程序的运行。它为企业和组织提供了稳定、可靠的服务器平台,支持各种规模的网络基础设施...
Django DRF禁用URL末尾斜杆(:) 点点滴滴

Django DRF禁用URL末尾斜杆(:)

一、关于URL末尾斜杆 比如http://127.0.0.1:8000/api/v1/register 和 http://127.0.0.1:8000/api/v1/register/, 这两个是同一...