openKylin论坛

 找回密码

银河麒麟手动设置全局变量,没有成功 [复制链接]

本帖最后由 import_key 于 2020-6-5 17:07 编辑

环境:
root@kylin-vm:/usr/local/unixODBC# cat /etc/lsb-release
DISTRIB_ID=Kylin
DISTRIB_RELEASE=4.0.2
DISTRIB_CODENAME=juniper
DISTRIB_DESCRIPTION="Kylin 4.0.2"
DISTRIB_KYLIN_RELEASE=4.0-2SP2
DISTRIB_VERSION_TYPE=community
DISTRIB_VERSION_MODE=normal

问题描述:
正常的设置全局的环境变量的是通过在 /etc/profile 文件最后面,添加 export myEnvVar=12345 的方式增加变量。 但是我重启后没有生效,需要手动执行source /etc/profile 或者 切换到root,然后在切换回来才生效。  

步骤:

① /etc/profile 文件后面,增加 export myEnvVar=12345
② 测试 source /etc/profile ,环境变量生效 echo $myEnvVar 能输出123456
问题:
重启计算机,非root用户登录,环境变量无效, echo $myEnvVar 没得反应。 只有重新加载才得行 source /etc/profile
想要的答案:
还有什么方式能够使得环境变量生效?或者在银河麒麟下正确的设置环境变量的方法是什么?
楼主
发表于 2020-6-2 17:14:41
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

怎么样麒麟系统,就怕
板凳
发表于 2020-6-2 18:12:44
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

换一个文件试试呢

Screen Shot 2020-06-03 at 09.27.43.png (180.37 KB, 下载次数: 36)

Screen Shot 2020-06-03 at 09.27.43.png
地板
发表于 2020-6-3 09:32:23
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

每次重启都需要执行一下 source 命令?
5#
发表于 2020-6-3 09:38:09
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

雷神 发表于 2020-6-3 09:38
每次重启都需要执行一下 source 命令?

是的,但是那个结果不是我想要的,
6#
 楼主| 发表于 2020-6-3 14:41:51
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

vzsh 发表于 2020-6-3 09:32
换一个文件试试呢

大哥,直接放到后面,这个方法还是没有用。
7#
 楼主| 发表于 2020-6-4 22:39:44
回复

使用道具 举报

银河麒麟手动设置全局变量,没有成功 [复制链接]

本帖最后由 import_key 于 2020-6-5 17:04 编辑

说明:
1、下面方法只能解决,当前登录的用户能够能够加载成功环境变量。
2、一旦切换su root环境变量失效, 在从su root切换回去,原本生效的环境变量,无效了。 (为什么登录的时候,在登录只加载了一次 /etc/profile , 切换用户的时候,没有执行这个 )


  1. # 在目录下新增一个shell文件 ,把环境变量写进去
  2. /etc/profile.d
  3. #  新增sh
  4. touch my.sh
  5. #
  6. vim my.sh
  7. # 内容如下
  8. export unixODBC_HOME="/usr/local/unixODBC"
  9. export PATH="$unixODBC_HOME/bin:$PATH"

复制代码


为什么可以这样写,是因为, /etc/profile 中是这样描述的。

  1. if [ "$PS1" ]; then
  2.   if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
  3.     # The file bash.bashrc already sets the default PS1.
  4.     # PS1='\h:\w\$ '
  5.     if [ -f /etc/bash.bashrc ]; then
  6.       . /etc/bash.bashrc
  7.     fi
  8.   else
  9.     if [ "`id -u`" -eq 0 ]; then
  10.       PS1='# '
  11.     else
  12.       PS1='$ '
  13.     fi
  14.   fi
  15. fi

  16. # 读取路径下shell,并执行。
  17. if [ -d /etc/profile.d ]; then
  18.   for i in /etc/profile.d/*.sh; do
  19.     if [ -r $i ]; then
  20.       . $i
  21.     fi
  22.   done
  23.   unset i

复制代码

8#
 楼主| 发表于 2020-6-4 22:44:28
回复

使用道具 举报

openKylin

GMT+8, 2024-4-28 09:51 , Processed in 0.033649 second(s), 21 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表