bash shell的清洁环境



是否有办法告诉bash脚本不要从父shell导入任何变量,即忽略导出的变量。在slurm--export=NONE中有这样的功能,所以我想知道是否有一个选项可以放在#!/bin/bash行中以获得类似的行为。

在linux上,我发现最干净的选项是:

#!/usr/bin/env -S - bash
env

where for me打印:

PWD=/home/allan
SHLVL=1
_=/usr/bin/env

另一个选项是:

#!/usr/bin/env bash
[ -n "$HOME" ] && exec -c "$0"
env

可以使用$BASH_SOURCE[0]代替$0,后者可由用户设置。但是,$BASH_SOURCE并不总是设置的。硬编码脚本路径可以工作,但这很难看。

最新更新