繁体   English   中英

在bash中将环境变量和函数打印为可执行命令

[英]Print environment variables and functions as executable commands in bash

在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 "$@"'

是否有可能只打印环境变量,然后以其他方式打印导出的函数,这是执行友好的? 任何意见,将不胜感激。

  • 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将打印变量和函数。

使用不带参数的set命令

set > variables_and_functions.bash

参考4.3.1 Set Builtin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM