在 bash shell 进程中,我到处定义了一些变量和函数。所以他们很难追踪。如何找到所有要取消设置的自定义变量和函数?谢谢。
答案1
不要尝试跟踪您创建的变量和函数。相反,在子 shell 中运行代码。当子 shell 完成时,子 shell 中定义的所有变量和函数都会消失。
在 bash 中,将命令显式放入子 shell 中的一种方法是将命令放入 parens: 内(...)
。例如,让我们在子 shell 中定义两个变量和一个函数并执行该函数:
$ ( a=1; b=2; fn() { echo "a=$a b=$b"; }; fn )
a=1 b=2
子 shell 完成后,所有内容都将被删除:
$ fn
bash: fn: command not found
答案2
快速而肮脏:将“空”环境与当前环境进行比较
env -i bash set > baseline
set > now
diff baseline now
答案3
您可以使用 compgen -v 列出 bash 中定义的所有变量,使用 compgen -A function 列出所有函数