【问题标题】:How to create a new environment variable in UNIX....?如何在 UNIX 中创建新的环境变量......?
【发布时间】:2010-06-14 06:48:30
【问题描述】:

如何在unix中新建环境变量并在程序中使用??????

【问题讨论】:

  • 正如 Pax 所说,这取决于 shell。

标签: unix environment-variables


【解决方案1】:

你可以通过ps -o comm= -p $$ 来判断你正在运行什么shell——我认为这或多或少是通用的。所以,在 bash 和某些类似的 shell 中......

如果你想为特定的运行创建变量,你可以这样做

MYVAR=value the_command_that_needs_myvar

如果您想为整个 shell 会话创建它(即,直到您注销):

export MYVAR=value

...然后你可以运行:

the_command_that_needs_myvar

...在该会话期间任意多次,它仍会将 MYVAR 视为具有值 value

如果您想为自己设置它,对于所有登录会话,请将其放入 ~/.profile

请注意,bash 的初始化文件可能是一个很棒的 WTF。根据它是交互式运行、通过网络运行还是在本地运行,并且取决于它是以sh 还是bash 调用的,它将选择性地读取~/.bashrc~/.profile~/.bash_profile 的某种组合。阅读 bash 手册页的 FILES 部分了解详细信息。

如果您希望为每个用户设置它,每次登录时,请将其放入文件/etc/profile(虽然也有/etc/environment,但我不确定它的使用范围有多广。)。

查看问题"How to set environment variable for everyone under my linux system?" 了解更多详情。

(请注意,其中一些建议会根据您或其他用户是否使用 bash、dash、csh、ksh 等而有所不同......但它应该适用于大多数用例。)

【讨论】:

  • 确实,整理一下是否使用/etc/environment,/etc/profile,~/.profile,~/.kshrc,~/.cshrc,~/.bash_profile,~/.bash_login, ~/.bashrc 和所有其他可能性对于胆小的人 :-)
  • 这让我想起了The UNIX Hater's Handbook——当然是糟糕的过去留下的 WTFery。我添加了一些关于个人bash 配置文件的内容。
【解决方案2】:

取决于外壳。在bash,你可以使用:

export myvar=xyz

这将设置变量并使其可用于其他程序。

如果你想为一个程序的调用设置它,你可以使用:

myvar=xyz ./myprog

这将为myprog 进程设置它,但不会在它退出后设置。

【讨论】:

    【解决方案3】:

    参见 setenv(3) 和 getenv(3) 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多