设置变量与环境变量 Linux(debian) Bash shell
Set variables versus env variables Linux(debian) Bash shell
创建设置变量时,将它们添加到环境中有什么好处?两者都在会话终止时丢失。我显然知道我可以向 .bashrc 添加有用的东西,我想通过我的用户访问这些东西。
只是不确定有什么好处?它有多常见?我需要担心吗?我说的是现实生活中的管理用途。
在我看来,set 是 class 中的局部变量。 ENV 显然是全球性的。也许唯一的用途是在遍历不同的 shell 时?实用性如何?
环境变量由您的 shell 调用的任何进程继承。这包括子 shells 和您调用的任何其他命令。
(非环境)shell变量不是。
例如,$TERM
需要导出,因为您从 shell(文本编辑器、寻呼机,任何使用全屏文本显示的东西)调用的命令需要知道您使用的是哪种终端,因此它可以在 termcap 或 terminfo 中查找其功能。 $LANG
和类似的变量需要导出,以便命令了解当前的语言环境。 $PATH
需要导出,以便您调用的任何命令都可以调用其他命令。
$PS1
,shell 提示,不需要导出,因为它只与当前的 shell 相关(并且通常为新的 shell 初始化s).
创建设置变量时,将它们添加到环境中有什么好处?两者都在会话终止时丢失。我显然知道我可以向 .bashrc 添加有用的东西,我想通过我的用户访问这些东西。 只是不确定有什么好处?它有多常见?我需要担心吗?我说的是现实生活中的管理用途。
在我看来,set 是 class 中的局部变量。 ENV 显然是全球性的。也许唯一的用途是在遍历不同的 shell 时?实用性如何?
环境变量由您的 shell 调用的任何进程继承。这包括子 shells 和您调用的任何其他命令。
(非环境)shell变量不是。
例如,$TERM
需要导出,因为您从 shell(文本编辑器、寻呼机,任何使用全屏文本显示的东西)调用的命令需要知道您使用的是哪种终端,因此它可以在 termcap 或 terminfo 中查找其功能。 $LANG
和类似的变量需要导出,以便命令了解当前的语言环境。 $PATH
需要导出,以便您调用的任何命令都可以调用其他命令。
$PS1
,shell 提示,不需要导出,因为它只与当前的 shell 相关(并且通常为新的 shell 初始化s).