在bash中,如果您在终端中运行alias
,它将打印出已定义别名的列表作为命令,如下所示:
alias foo=bar
如果需要,可以先alias > my_aliases.sh
,然后再source my_aliases.sh
。除了环境变量和定义的函数外,我还想做同样的事情。
env
似乎可行,但这并不完全可行。我需要这个来输出环境变量和函数,但是我在env
的输出中看到了这样的行:
BASH_FUNC_foo()=() { ls foo
}
foo
是函数的实际名称,但是我无法将env
的输出添加到文件中并source
。如果我这样做了,该脚本将出错,如下所示:
bash: test.sh: line 8: `BASH_FUNC_pkgs()=() { pkg ls "$@"'
是否可以仅打印环境变量,然后以其他易于执行的方式打印导出的函数?任何建议将不胜感激。
答案 0 :(得分:6)
declare -p
将以可重用的格式打印所有变量,包括export / integer / readonly / etc。属性。
declare -x USER="jkugelman"
declare -x USERNAME="jkugelman"
declare -x VISUAL="vim"
declare -fp
将以可重用的格式打印所有功能。
reload ()
{
history -a;
exec bash -l
}
如果您不关心属性,则裸declare
会同时打印变量和函数。
答案 1 :(得分:1)