161 path environment-variables
这让我很恼火。我看到了几个建议(都使用不同的文件和语法),但都没有奏效。
如何为特定用户设置环境变量?我在 debian 挤压。我应该在文件中放入 ABC = "123" 的确切语法是什么?
Mat*_*teo 131
您必须将声明放在 shell 的初始化文件中:
如果您使用的是 bash、ash、ksh 或其他一些 Bourne 风格的 shell,您可以添加
ABC="123"; export ABC
Run Code Online (Sandbox Code Playgroud)
在您的.profile文件 ( ${HOME}/.profile) 中。这是大多数 Unix 安装的默认情况,尤其是在 Debian 上。
如果您的登录 shell 是 bash,您可以使用.bash_profile( ${HOME}/.bash_profile) 或.bash_login代替。
注意:如果这些文件中的任何一个存在并且您的登录 shell 是 bash,.profile当您通过 ssh 或在文本控制台上登录时不会读取它,但.bash_profile如果您从 GUI 登录,它可能仍然会被读取。此外,如果没有.bash_profile,则使用.bashrc。
如果您设置的zsh作为登录shell,使用~/.zprofile代替~/.profile。
如果您使用的是 tcsh,请添加
setenv ABC "123"
Run Code Online (Sandbox Code Playgroud)
在.login文件 ( ${HOME}/.login)
如果您正在使用另一个 shell,请查看 shell 手册如何定义环境变量以及在 shell 启动时执行哪些文件。
小智 55
使用/etc/environment文件来设置环境变量。然后在/etc/environment文件中添加以下行。
ABC="123"
Run Code Online (Sandbox Code Playgroud)
现在可以从所有用户会话访问ABC变量。要测试变量输出首先使用命令刷新环境变量
source /etc/environment
Run Code Online (Sandbox Code Playgroud)
并运行echo $ABC。
这是一个可以用于几乎任何 shell 的通用过程。在任何情况下,您都必须知道用户通常使用哪个 shell 登录:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Run Code Online (Sandbox Code Playgroud)
然后你必须弄清楚这个 shell 通常会读取哪些点文件:
man $shell
Run Code Online (Sandbox Code Playgroud)
一个可能有效的快捷方式是列出那些包含 shell 名称的点文件:
ls ~/.*${shell}*
Run Code Online (Sandbox Code Playgroud)
如果您想检查在登录期间是否实际读取了其中一个文件,您可以简单地在每个文件中打印文件名,例如:
echo .bashrc
Run Code Online (Sandbox Code Playgroud)
登录时,您应该看到正在读取哪些文件,您可以决定修改哪个文件。请注意,您不应该尝试使用echo "$0"或类似,因为 的值$0取决于外壳程序如何处理点文件,并且可能会产生误导。
当谈到“永久”声明变量时,请注意这仅扩展到会话。没有会话就无法访问变量的值,因此它没有任何意义。如果你的意思是“只读”,那就是依赖于 shell,在Bash 中你可以使用:
declare -r VAR
Run Code Online (Sandbox Code Playgroud)
如果它已经有一个值,或者
declare -r VAR=value
Run Code Online (Sandbox Code Playgroud)
同时分配它。并非所有壳都具有此功能。
要在大多数 shell 中声明变量,您应该使用变量名 ( [A-Za-z_][A-Za-z0-9_]*),后跟一个等号(等号周围没有空格),然后是一个值(最好用引号引起来,除非值是简单的[A-Za-z0-9_]+)。例如:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1
Run Code Online (Sandbox Code Playgroud)
使用导出。
export ABC="123"
Run Code Online (Sandbox Code Playgroud)
要检查它是否已设置,请使用
env
Run Code Online (Sandbox Code Playgroud)
和/或
env | grep ABC
Run Code Online (Sandbox Code Playgroud)
要永久添加它,请将其添加到您的~/.bashrc文件中。
export ABC="123"
Run Code Online (Sandbox Code Playgroud)