Один из подходов - использовать sed:
Например, чтобы убрать комментарии:
printf "hello\nx=1\n/* some comment */\nnot some comment\nthis has /* but no close\n" |
sed 's%.*/\*.*\*/%%; /^$/d'
Когда мне интересно, что делает программа с открытым исходным кодом, я просматриваю исходный код (и документацию, а также эксперименты ). Похоже, вы нашли довольно хороший список, основанный на поиске set_auto_export (
в исходном коде bash для переменных.c
$OLDPWD
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n897
$PWD
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n849
$SHLVL
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n839
На QNX,$NODE
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n483
Они находятся внутри initialize_shell_variables()
, который вызывается изshell_initialize()
в shell.c, который сам вызывается изmain()
в shell.c.
Вы даже можете найти доказательства того, что $PATH
и $TERM
были помечены для экспорта в какой-то момент времени, но теперь ifdef'd
исключены.