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

11

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

export PATH = A:
              B:
              C:
prosseek
источник

Ответы:

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

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

developmentalinsanity
источник
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")

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

Люк Дэвис
источник