假设我有一个脚本install.sh
。
我想在此脚本的开头放置一条命令,该命令将为我清理环境,仅保留父外壳程序的$ PATH和$ HOME。
我了解env -i
,但是它需要第二个脚本来执行“ env -i install.sh” 。我想要一个可以直接运行的install.sh脚本(“ sh install.sh”或“ ./install.sh”)。
答案 0 :(得分:3)
您可以re-exec the script from within it:
-webkit-animation:slideshow 21s infinite;
animation:slideshow 21s infinite;
[ -z "$CLEANED" ] && exec env -i CLEANED=1 "PATH=$PATH" "HOME=$HOME" bash "$0" "$@"
unset CLEANED
是标记变量,用于告诉您的脚本环境已清除。
答案 1 :(得分:1)
执行此操作的一种方法是使用compgen -v
给出变量名列表,然后依次取消设置每个变量名:
for i in $(compgen -v)
do
case "$i" in
HOME|PATH)
;;
*)
unset "$i"
;;
esac
done
unset i
请注意,有些Bash变量无法设置:
BASHOPTS
BASH_ARGC
BASH_ARGV
BASH_LINENO
BASH_SOURCE
BASH_VERSINFO
EUID
PIPESTATUS
PPID
SHELLOPTS
UID
_