我只是在学习基础知识,包括如何声明和使用变量。有没有一种简单的方法来显示我命名的所有变量的列表? (我通过搜索找到的所有内容都只讨论环境变量,这可能是我正在寻找的内容,但可能不是?)
答案1
运行declare
本身将为您提供所有环境变量的列表在当前外壳中,包括您自己定义的那些。它还将包含任何功能,除非您使用-p
跳过它们的选项,但会增加一些额外的噪音。
答案2
有 2 种不同类型的变量(实际上比这更多,但在本上下文中只有 2 个):私有变量和导出变量。
私有变量是可以在 shell(或脚本)中使用但不能由 shell(或脚本)启动的程序使用的变量。您可以使用、或
获取所有变量的列表,包括导出的变量。在 bash 中,这三个都做同样的事情。declare
typeset
set
导出的变量可由 shell 或由它启动的程序使用。
您可以使用 获取导出变量的列表env
。
需要注意的一件关键事情是在做这样的事情时:
FOO="bar"
echo "$FOO"
$FOO
是私有/非导出变量。外壳在传递到 之前实际上已经扩展$FOO
到。所以实际上被称为.bar
echo
echo
echo "bar"
您可以通过执行export FOO
, 或 来导出变量export FOO="bar"
。
此外,您可以通过在命令开头添加变量来导出变量,以便仅对程序进行一次调用。例如
FOO="bar" cmd1
cmd2
cmd1
将可以访问$FOO
但cmd2
不会。