【问题标题】:Persisting an environment variable on Solaris [closed]在 Solaris 上持久化环境变量 [关闭]
【发布时间】:2013-02-25 09:02:56
【问题描述】:

我需要为 Oracle 编码配置更改环境变量 $NLS_LANG。 我按照以下步骤操作:

  1. 打开 /etc/profile 文件。
  2. 在文件中添加了“export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9”行

当我尝试过时;

回显 $NLS_LANG

但控制台在执行后打印了旧变量:

。 /etc/配置文件

控制台正确打印了变量的最后一个赋值。

这种情况的主要问题是,当我打开一个新控制台并执行 echo 命令时,控制台仍然会打印 $NLS_LANG 变量的旧值。

那么,在 Solaris 上持久化环境变量的正确方法是什么?
谢谢...

ps:Solaris 版本是 -> 5.10。

【问题讨论】:

  • 除非您有更具体的文件导出,我认为您只需要注销并再次登录。
  • 你用的是什么外壳?如果是 Solaris 10 (SunOS 5.10) 上的 /bin/sh,则不支持 export VARIABLE=value,您需要使用 VARIABLE=value; export VARIABLE。导出 VARIABLE=value 语法适用于 ksh、bash 和(因为它是 ksh93)/bin/sh 在 Solaris 11 及更高版本上。
  • @alanc 我正在使用 ksh。
  • @cnicutar 登录/注销过程可能有效,但由于其他开发人员正在使用该系统,所以我还没有尝试过。

标签: unix environment-variables solaris


【解决方案1】:

.profile 只能由登录 shell 读取。因此,您必须以 - 作为第一个参数来启动您的 shell,以强制登录 shell(或者,如 @cnicutar 建议的那样,注销/登录)。

作为替代方案,您可以将分配放入在“正常”(交互式)调用时读取的文件中,例如,在 Korn Shell 的情况下为.kshrc

【讨论】:

    【解决方案2】:

    您需要在您的主目录中添加您的.profile 导出文件。请用 export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9 在您的 /home/folder/.profile 文件中。这样每次登录时,都会配置变量。

    【讨论】:

      【解决方案3】:

      /etc/profile 中的环境变量会在您以用户身份登录时加载。因此,如果您不注销并再次登录,$NLS_LANG 将不会被加载。

      如果你现在不想登录,你可以使用EXPORT让系统加载新值:

      NLS_LANG="new value"
      export $NLS_LANG
      

      或直接

      export NLS_LANG="new value"
      

      【讨论】:

        猜你喜欢
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 2017-07-25
        • 2011-08-19
        • 2021-09-23
        相关资源
        最近更新 更多