在bash中将环境变量和函数打印为可执行命令
在bash中,如果在终端中运行在bash中将环境变量和函数打印为可执行命令,bash,Bash,在bash中,如果在终端中运行alias,它会将定义的别名列表打印为命令,如下所示: alias foo=bar bash: test.sh: line 8: `BASH_FUNC_pkgs()=() { pkg ls "$@"' 如果愿意,可以alias>my_alias.sh然后source my_alias.sh。除了环境变量和定义的函数之外,我也想要同样的东西 env看起来可能有用,但这不太管用。我需要它来输出环境变量和函数,但我在env的输出中看到类似的行: BASH_FUNC_
alias
,它会将定义的别名列表打印为命令,如下所示:
alias foo=bar
bash: test.sh: line 8: `BASH_FUNC_pkgs()=() { pkg ls "$@"'
如果愿意,可以alias>my_alias.sh
然后source my_alias.sh
。除了环境变量和定义的函数之外,我也想要同样的东西
env
看起来可能有用,但这不太管用。我需要它来输出环境变量和函数,但我在env
的输出中看到类似的行:
BASH_FUNC_foo()=() { ls foo
}
foo
是我函数的实际名称,但我不能将env
的输出添加到文件中,也不能将其添加到source
中。如果我这样做,脚本将出现如下错误:
alias foo=bar
bash: test.sh: line 8: `BASH_FUNC_pkgs()=() { pkg ls "$@"'
是否有一种方法可以只打印环境变量,然后以执行友好的其他方式打印导出的函数?任何建议都将不胜感激。
将以可重用的格式打印所有变量,包括export/integer/readonly/etc.属性declare-p
declare -x USER="jkugelman" declare -x USERNAME="jkugelman" declare -x VISUAL="vim"
将以可重用的格式打印所有函数declare-fp
reload () { history -a; exec bash -l }
- 如果您不关心属性,则裸
声明将同时打印变量和函数
set
命令
set > variables_and_functions.bash
Ref注意,这比John的答案更糟糕,因为变量的范围没有“声明”。