【发布时间】:2020-08-18 04:21:24
【问题描述】:
我最近有一本关于 bash 中的 shell 脚本的书。它声明使用 printenv 命令列出所有环境变量。我注意到这并没有列出所有变量,例如 $PWD 或 $REPLY 或 $SSH_TTY。它们是我可以参考的所有这些环境变量及其函数的完整列表吗?
【问题讨论】:
-
$REPLY是来自 shell 而非环境的内置变量。对于您的问题,请尝试declare -x -
set命令可能会做你想做的事。 -
环境变量和shell内置变量有什么区别?它们都是由外壳而不是用户设置的?
-
关于最初的问题,
set和declare -x似乎对我有用。谢谢 -
printenv将显示所有在您当前的shell中设置的环境变量。它没有显示所有可以设置(从技术上讲,您几乎可以将任何字符串设置为环境变量)。在某些情况下(例如在 ssh 会话中)有大量 将被设置;或者,如果设置,将具有特殊功能(例如LANG和LC_*变量,它们会告诉程序使用什么语言环境;参见man locale)。没有这些的完整列表,因为任何编写程序的人都可以让它创建/响应他们想要的任何变量,从而创建一个新变量。
标签: bash shell unix environment-variables documentation