set
命令显示所有局部变量,如下所示。如何一次导出这些变量?
>set
a=123
b="asd asd"
c="hello world"
Run Code Online (Sandbox Code Playgroud)
小智 117
在设置变量之前运行以下命令:
set -a
Run Code Online (Sandbox Code Playgroud)
手册页:
-a
当此选项打开时,应为执行赋值的每个变量设置导出属性;
要关闭此选项,请set +a
稍后运行。
例子:
set -a
. ./environment
set +a
Run Code Online (Sandbox Code Playgroud)
其中environment
包含:
FOO=BAR
BAS='quote when using spaces'
Run Code Online (Sandbox Code Playgroud)
如果您的外壳是 bash(也可能是其他外壳),则此方法有效
export > /my/env/var/file
Run Code Online (Sandbox Code Playgroud)
您的新文件将包含所有当前定义的变量的转储......
declare -x PORT="9000"
declare -x PORT_ADMIN="3001"
declare -x PORT_DOCKER_REGISTRY="5000"
declare -x PORT_ENDUSER="3000"
declare -x PRE_BUILD_DIR="/cryptdata6/var/log/tmp/khufu01/loud_deploy/curr/loud-build/hygge"
declare -x PROJECT_ID="hygge"
declare -x PROJECT_ID_BUSHIDO="bushido"
Run Code Online (Sandbox Code Playgroud)
然后用所有这些 env vars 问题来提升当前的 shell
source /my/env/var/file
Run Code Online (Sandbox Code Playgroud)
小智 5
`echo "export" $((set -o posix ; set)|awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}')`
Run Code Online (Sandbox Code Playgroud)
首先,获取所有设置的环境变量:(set -o posix ; set)
参考:https : //superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a- linux-ba
获取所有环境变量名称,以空格分隔:awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
参考:awk-Printing column value without new line 并添加逗号和
/sf/ask/994909541/ awk 命令
现在,我们需要导出这些变量,但是 xargs 不能这样做,因为它派生了子进程,导出必须在当前进程下运行。echo "export" ...
构建一个我们想要的命令,然后使用`` 来运行它。这就是全部:p。