Строки настройки переменных среды с несколькими путями с bash


11

Я очень долго export PATH=A:B:C .... Можно ли сделать несколько строк более организованной, как показано ниже?

export PATH = A:
              B:
              C:

Ответы:


22

Ты можешь сделать:

export PATH="A"
export PATH="$PATH:B"
export PATH="$PATH:C"

Каждая последующая строка добавляется на ранее определенный путь. Это, как правило, хорошая привычка, так как она не мешает существующему пути. Если вы хотите, чтобы новый компонент имел приоритет, поменяйте местами порядок:

export PATH="A"
export PATH="B:$PATH"
export PATH="C:$PATH"

В качестве альтернативы вы можете сделать:

export PATH=A:\
B:\ 
C

где \отмечает продолжение строки. Не проверял этот метод.


2
Обратите внимание, что exportэто встроенная команда, а не ключевое слово или синтаксическое назначение. Поэтому, если у вас есть PATHэлементы, содержащие пробелы (или символы глобуса), вам нужны двойные кавычки export PATH="$PATH:B". Вы также можете написать PATH=$PATH:Bи так далее; exportпеременная вам нужна только один раз, а не каждый раз, когда она меняется (за исключением некоторых очень старых оболочек Борна), и вам не нужны двойные кавычки в назначении.
Жиль "ТАК - перестань быть злым"

1
Также PATH+=:Bработает для конкатенации строк.
Арье Лейб Таурог

4

Вы можете расширить строки в bash, используя обратную косую черту в конце строки, например:

export PATH=/path/A:\
/path/B:\
/path/C

Обратите внимание, что отсутствие пробелов здесь важно.


0

Другой подход:

export PATH=$(tr -d $'\n ' <<< "
   /path/A:
   /path/B:
   /path/C")

Имеет дополнительное преимущество, не портя уровень отступа.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.