如何设置一个用户环境变量?(永久的,不是会话)
这让我很恼火。我看到了几个建议(都使用不同的文件和语法),但都没有成功。
我如何为一个特定的用户设置一个环境变量?我是在debian squeeze上。 我应该在文件中加入什么确切的语法来使ABC="123"?
145
3
这让我很恼火。我看到了几个建议(都使用不同的文件和语法),但都没有成功。
我如何为一个特定的用户设置一个环境变量?我是在debian squeeze上。 我应该在文件中加入什么确切的语法来使ABC="123"?
你必须把这个声明放在你的shell的初始化文件中。
如果你使用bash、ash、ksh或其他Bourne风格的shell,你可以加入
在你的".profile "文件(
${HOME}/.profile
)中。这是大多数Unix装置的默认情况,特别是在Debian上。如果你的登录外壳是bash,你可以使用
.bash_profile
(${HOME}/.bash_profile
)或.bash_login
来代替。注意:如果这两个文件都存在,并且你的登录外壳是bash,那么当你通过ssh或文本控制台登录时,
.profile
不会被读取,但如果你从GUI登录,它仍然可能被读取,而不是.bash_profile
。另外,如果没有.bash_profile
,则使用.bashrc
。如果你将zsh设置为你的登录shell,使用
~/.zprofile
而不是~/.profile
。如果你使用的是tcsh,请添加
在
.login
文件(${HOME}/.login
)中这是一个一般的程序,你可以用于几乎所有的shell。在任何情况下,你都必须知道用户通常会用哪个shell登录。
然后,你必须弄清楚这个shell通常会读取哪些点文件。
一个可能有用的捷径是列出那些包含shell名称的点文件。
如果你想检查其中一个文件在登录时是否真的被读取,你可以简单地打印其中的文件名,比如说。
当登录时,你应该看到哪些文件被读取,你就可以决定修改哪个文件了。注意,你不应该尝试使用
echo "$0"
或类似的方法,因为`$0'的值取决于shell如何处理点文件,可能会产生误导。当涉及到声明变量"永久"时,请注意这只延伸到会话。在没有会话的情况下,没有办法访问变量的值,所以它在会话之外没有任何意义。如果你指的是"只读",那是依赖于shell的,在Bash中你可以使用。
如果它已经有了一个值,或者
来同时分配它。不是所有的壳都有这个功能。
在大多数shell中声明一个变量,应该使用一个变量名(
[A-Za-z_][A-Za-z0-9_]*
),后面是一个等号(等号周围不能有空格*),然后是一个值(最好有引号,除非这个值是一个简单的[A-Za-z0-9_]+
)。比如说使用出口。
要检查它是否被设置,请使用
和/或
要永久添加它,请将此添加到你的
~/.bashrc
文件中。