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

Как я могу выполнить программу (в частности, псевдоним 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 в 14:08

1 ответ

Имена переменных среды по умолчанию записываются заглавными буквами. Теперь, предполагая, что вы будете определять новые переменные среды с маленькими буквами (как это в вашем примере 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"
}

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

1
ответ дан 24 May 2018 в 17:00
  • 1
    Спасибо, это хорошее альтернативное решение, но, возможно, я не был конкретным в своем вопросе. Я действительно хотел отключить переменную $TMUX, чтобы порожденный экземпляр xterm мог запускать tmux (как спросил и продемонстрировал Оли) – kiri 12 October 2013 в 02:18
  • 2
    @ minerz029 Хорошо, не проблема, тогда вы можете добавить еще одну строку: elif [ "$var" = "TMUX" ]; then unset $var до fi. То же самое для других переменных env с прописными буквами. – Radu Rădeanu 12 October 2013 в 02:39
  • 3
    @ minerz029 Я привел вам пример, но вы можете приспособить его, как хотите. – Radu Rădeanu 12 October 2013 в 02:46

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

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