【发布时间】:2010-06-14 06:48:30
【问题描述】:
如何在unix中新建环境变量并在程序中使用??????
【问题讨论】:
-
正如 Pax 所说,这取决于 shell。
标签: unix environment-variables
如何在unix中新建环境变量并在程序中使用??????
【问题讨论】:
标签: unix environment-variables
你可以通过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 等而有所不同......但它应该适用于大多数用例。)
【讨论】:
bash 配置文件的内容。
取决于外壳。在bash,你可以使用:
export myvar=xyz
这将设置变量并使其可用于其他程序。
如果你想为一个程序的调用设置它,你可以使用:
myvar=xyz ./myprog
这将为myprog 进程设置它,但不会在它退出后设置。
【讨论】:
参见 setenv(3) 和 getenv(3) 函数。
【讨论】: