Назад | Перейти на главную страницу

Как упростить конкатенацию путей переменных окружения в bash?

Чтобы изменить свои пути (например, LD_LIBRARY_PATH или PYTHONPATH), я сначала проверяю, существует ли переменная. Если да, то я сцепление мое старое значение с новым (разделенным точкой с запятой), иначе я настройки моя переменная на новое значение.

NEW_PATH='/path/to/new/path'  
if [ $LD_LIBRARY_PATH ]  
then  
    export LD_LIBRARY_PATH=$NEW_PATH:$LD_LIBRARY_PATH  
else  
    export LD_LIBRARY_PATH=$NEW_PATH  
fi  

Это работает, но это немного неуклюже, когда у вас их много в скрипте для исходных текстов: есть ли хитрый трюк, чтобы сделать этот блок красивым одним лайнером?

Спасибо !

Этот синтаксис работает:

export LD_LIBRARY_PATH=$NEW_PATH${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}

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

if [ -z "$LD_LIBRARY_PATH" ]; then
    export LD_LIBRARY_PATH=/some/sane/default
fi

... и тогда вы знаете, что он всегда установлен, поэтому вы можете оставить else выше.