如何将env输出为可运行的shell脚本

Sam*_*ron 8 bash

使用可以将环境简单地输出为可运行的shell脚本

env > my_env
Run Code Online (Sandbox Code Playgroud)

......后来在另一个剧本......

set -a
source my_env
Run Code Online (Sandbox Code Playgroud)

这适用于最琐碎的情况,但如果任何特殊的字符或空格在env中则失败.

我如何修复上面的脚本,以便它可以用于这样的东西a='"'"'"

Mik*_*eyB 4

使用set而不是env

\n\n
\xe2\x97\x8b \xe2\x86\x92 set | grep LESS\nLESS=-R\nLESSCLOSE=\'/usr/bin/lesspipe %s %s\'\nLESSOPEN=\'| /usr/bin/lesspipe %s\'\n\n\xe2\x97\x8b \xe2\x86\x92 env | grep LESS\nLESS=-R\nLESSOPEN=| /usr/bin/lesspipe %s\nLESSCLOSE=/usr/bin/lesspipe %s %s\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于这个类似的问题,我们可以这样做来获取环境变量,如下所示:

\n\n
\xe2\x97\x8b \xe2\x86\x92 (set -o posix; set) | grep LESS\nLESS=-R\nLESSCLOSE=\'/usr/bin/lesspipe %s %s\'\nLESSOPEN=\'| /usr/bin/lesspipe %s\'\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

试试这个庞然大物,它应该打印出与“原始”外壳不同的内容。嗯嗯:

\n\n
diff --old-line-format=\'%L\' --unchanged-line-format= --new-line-format= \\\n    <(bash -c \'set -o posix; set\' | sort) \\\n    <(env -i bash -c \'set -o posix; set\' | sort)\n
Run Code Online (Sandbox Code Playgroud)\n