Как выполнить программу с переменными по умолчанию?

Как выполнить программу (в частности псевдоним bash) с переменными среды по умолчанию?

Рассмотрим пример:

export test="something I dont want to exist"

alias _xterm='xterm -fn 7x13 -fa "Ubuntu Mono:size=12:antialias=false"'

_xterm

В порожденном экземпляре xterm переменная $test не должно быть установлено.

1
задан 8 February 2014 в 12:08

2 ответа

Имена переменных среды по умолчанию пишутся заглавными буквами. Теперь, предполагая, что вы будете определять новые переменные окружения с крошечными буквами (как в вашем примере test), вместо того, чтобы использовать простой псевдоним _xterm, вы можете использовать функцию _xterm, где вам нужно сбросить новый Переменные среды и сохраняют только переменные среды по умолчанию для нового экземпляра оболочки:

_xterm () {
    for var in $(env | cut -d"=" -f1)
    do
        if [[ ! "$var" =~ [^a-z] ]]; then
            unset $var   #or env -u $var
        fi
    done
    xterm -fn 7x13 -fa "Ubuntu Mono:size=12:antialias=false"
}

Таким образом, ваши новые переменные среды недоступны в новом экземпляре оболочки, но когда вы возвращаетесь к старому экземпляру оболочки, вы все еще может использовать их.

0
ответ дан 8 February 2014 в 12:08

Вы можете выполнить свою команду в пустой среде. :

env -i _xterm

Быстрая проверка:

$ export TMUX=3
$ bash -c 'echo $TMUX'
3
$ env -i bash -c 'echo $TMUX'
# nothing echos

Сохранение [ 114], $USER и т. Д .:

$ env -i bash -c 'echo $DISPLAY'
# nothing
$ env -i DISPLAY=$DISPLAY bash -c 'echo $DISPLAY'
:0

Или вы можете явно исключить только некоторые переменные с опцией env -u:

$ export TMUX=3
$ env -u TMUX bash -c 'echo $TMUX'
# nothing
0
ответ дан 8 February 2014 в 12:08

Другие вопросы по тегам:

Похожие вопросы: