本文介绍了 Linux 导出命令的基础知识,并展示了如何使用导出命令设置、查看和操作 Linux 环境变量。
Linux 中的环境变量被 Linux 系统上发生的大多数活动所使用。从执行诸如“ls”之类的标准命令到在您的 Linux 机器中安装新软件,每个活动都使用或更改环境变量列表。
环境变量定义:
它是一个可以被多个应用程序使用的命名对象,因为它包含这些应用程序所需的一些有价值的信息
1.查看所有当前导出的变量
使用 export -p 查看所有环境变量,如下所示。此处显示部分输出。
$ export -p
declare -x COLORTERM="gnome-terminal"
declare -x DEFAULTS_PATH="/usr/share/gconf/gnome.default.path"
declare -x DESKTOP_SESSION="gnome"
declare -x HOME="/home/himanshu"
declare -x LOGNAME="himanshu"
declare -x MANDATORY_PATH="/usr/share/gconf/gnome.mandatory.path"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
declare -x PWD="/home/himanshu"
declare -x SHELL="/bin/bash"
declare -x SSH_AGENT_PID="1663"
declare -x USER="himanshu"
declare -x USERNAME="himanshu"
declare -x WINDOWID="56623107"
请注意,您还可以使用“env”命令查看此列表。
2.查看特定的导出变量
使用 echo 命令显示特定的环境变量。以下示例显示 PATH 环境变量的值。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
3.设置环境变量
您可以添加一个新的环境变量,如下所示。下面创建一个名为“MYAPP”的新环境变量并赋值为 1。
$ export MYAPP=1
使用 echo 命令验证环境变量是否设置正确。
$ echo $MYAPP
1
注意:不要在 = 符号之前和/或之后给出空格。例如,以下所有内容均无效。
$ export MYAPP = 1
-bash: export: `=': not a valid identifier
-bash: export: `1': not a valid identifier
$ export MYAPP =1
-bash: export: `=1': not a valid identifier
$ export MYAPP= 1
-bash: export: `1': not a valid identifier
4. 将值附加到环境变量
在下面的示例中,我们尝试将新路径附加到 PATH 变量。使用 ':' 分隔值。
$ export PATH=$PATH:/home/himanshu/practice/
验证该值是否已正确附加。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/himanshu/practice/
5. 没有导出的变量
在交互式 shell 中为变量赋值,并尝试在 shell 脚本中访问该变量。
$ MYAPP=1
$ cat myapp.sh
#!/bin/bash
echo "MYAPP=$MYAPP"
MYAPP=2
echo "MYAPP=$MYAPP"
现在,执行上面的脚本,如下所示。
$ ./myapp.sh
MYAPP=
MYAPP=2
你仍然会得到变量 MYAPP 的空白值。shell 仅在当前 shell 中存储带有 LINUX 的变量 MYAPP。在执行 myapp.sh 期间,它会生成 shell 并执行脚本。所以变量 MYAPP 在生成的 shell 中不会有值。您需要导出变量以使其被另一个程序(包括 shell 脚本)继承。
另外,请参阅bash 变量教程,其中解释了变量的局部和全局范围、声明 bash 变量以及其他一些示例。
6. 永久导出变量
要永久导出变量,您可以在以下任何启动文件中添加导出命令:
~/.profile
~/.bash_profile
/etc/profile
可能存在一些限制,例如“如果 ~/.bash_profile 或 ~/.bash_login 存在,则 ~/.profile 不被 bash 读取。”。所以应该阅读“/usr/share/doc/bash/examples/startup-files”来更好地了解这些启动文件是如何工作的。 |