sun*_*nil 24 unix linux bash shell environment-variables
shell和环境变量之间有什么区别?这些变量存储在哪里?
Ada*_*tan 22
引用此来源,
标准UNIX变量分为两类,环境变量和shell变量.从广义上讲,shell变量仅适用于shell的当前实例,用于设置短期工作条件; 环境变量具有更深远的意义,登录时设置的那些变量在会话期间有效.按照惯例,环境变量具有UPPER CASE,而shell变量具有小写名称.
要列出所有环境变量,请使用printenv和列出所有shell变量,使用set.
您会注意到环境变量存储更多永久值,例如:
HOME=/home/adam
Run Code Online (Sandbox Code Playgroud)
哪个更改很少,而shell变量存储本地,临时,特定于shell的值,例如:
PWD=/tmp
Run Code Online (Sandbox Code Playgroud)
每次更改当前目录时都会更改.
对于大多数实际任务,通过添加export VARIABLE_NAME=VALUE到〜/ .bashrc文件来设置环境值.
dir*_*obs 11
对于 Bash 外壳:
Shell 变量与环境变量的不同之处在于:
? shell 变量特定于 shell 本身,不会被子进程继承。例如,假设您正在从 shell 运行另一个应用程序,该应用程序不会继承 shell 变量:
$ SHELL_VAR=xyz
$ firefox
Run Code Online (Sandbox Code Playgroud)
SHELL_VAR 在子进程 (firefox) 的环境中将不可用。
? 相比之下,父进程(这里是shell)的环境变量被所有子进程继承:
$ export SHELL_VAR=xyz
$ firefox
Run Code Online (Sandbox Code Playgroud)
? shell 和环境变量都是定义它们的 shell/进程的本地变量:
环境变量可以是持久的,而对于 shell 变量,一旦您退出会话,它们就会全部消失。
注意:以上示例仅更改您正在处理的 shell,换句话说,如果您注销或启动一个新的 shell/终端,您将看不到您定义的变量,这是按照流程原则地点。
如何制作持久化的 shell 变量:
一种方法是修改~/.profile文件:
export SHELL_VAR=xyz
Run Code Online (Sandbox Code Playgroud)
此设置是特定于用户的而不是系统范围的,对于系统范围的环境变量,您可以将上述行添加到/etc/profile.d 中的.sh文件中
我强烈建议阅读此页面:EnvironmentVariables
twi*_*imo 10
它们的区别类似于Java类中私有字段和受保护字段之间的区别.
只能从该Java类访问Java类的私有字段.可以从该Java类及其子类访问Java类的受保护字段.
shell的shell变量只能从该shell进程访问.从该shell导出的环境变量可以从该shell进程和从该shell创建的子进程访问.
| 归档时间: |
|
| 查看次数: |
14080 次 |
| 最近记录: |