如何在unix中创建一个新的环境变量并在程序中使用它?
答案 0 :(得分:12)
你可以通过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
调用AND,它将有选择地读取~/.bashrc
,{{1 }和~/.profile
。有关详细信息,请阅读~/.bash_profile
手册页的FILES部分。
如果您希望为每个用户设置它,每次登录时都将其放在文件bash
中(尽管还有/etc/profile
,我不确定它是如何广泛使用的)。
查看问题"How to set environment variable for everyone under my linux system?"以获取更多详细信息。
(请注意,根据您或其他用户是否使用bash,dash,csh,ksh等,这些建议会有所不同......但它应该适用于大多数用例。)
答案 1 :(得分:6)
取决于shell。在bash
中,您可以使用:
export myvar=xyz
将设置变量并使其可供其他程序使用。
如果要将其设置为一个调用程序,可以使用:
myvar=xyz ./myprog
这将为myprog
进程设置,但不会在退出后设置。
答案 2 :(得分:1)
参见setenv(3)和getenv(3)函数。