Добавление новой записи в переменную PATH в ZSH

Я использую zsh, и я пытаюсь добавить новую запись (/home/david/pear/bin) в переменную PATH, но я не знаю, как это сделать.

То, что меня смущает больше всего, это то, что нет ни одного ссылку на переменную PATH в моем файле ~/.zshrc, но выполнение echo $PATH возвращает:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Так что переменная PATH устанавливается где-то.

Ответ 1

Здесь:

export PATH=/home/david/pear/bin:$PATH

Ответ 2

Собственно, использование ZSH позволяет использовать специальное сопоставление переменных среды. Поэтому вы можете просто:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

Для меня это очень аккуратная функция, которая может быть распространена на другие переменные. Пример:

typeset -T LD_LIBRARY_PATH ld_library_path :

Ответ 3

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

path+=/some/new/bin/dir

Общее использование

Тогда общий шаблон для тестирования нового скрипта/исполняемого файла становится:

path+=$PWD/.
# or
path+=$PWD/bin

Этот синтаксис в нижнем регистре использует path в качестве массива, но также влияет на его эквивалент партнера в верхнем регистре, PATH (с которым он "связан" через typeset).

(Обратите внимание, что нет : требуется/требуется в качестве разделителя.)

Связанные лакомые кусочки

Обрабатывать path таким образом (как массив) также означает: не нужно rehash чтобы найти только что обновленные команды.

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

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

Вы даже можете запретить PATH принимать дубликаты записей (см. Это и это):

typeset -U path

Ответ 4

один вкладыш, без открытия ~/.zshrc файла

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

или

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Чтобы увидеть эффект, сделайте source ~/.zshrc на той же вкладке или откройте новую вкладку

Ответ 5

ВАРИАНТ 1: Добавьте эту строку в ~/.zshrc:

export "PATH=$HOME/pear/bin:$PATH"

После этого вам нужно запустить source ~/.zshrc чтобы изменения вступили в силу ИЛИ закрыть это окно и открыть новое.

ВАРИАНТ 2: выполнить его внутри консоли терминала, чтобы добавить этот путь только в текущий сеанс окна терминала. Когда вы закроете окно/сессию, оно будет потеряно.

Ответ 6

  1. Добавлен путь к ~/.zshrc

    sudo vi ~/.zshrc

    добавить новый путь

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
    
  2. Обновление ~/.zshrc

    Сохранить ~/.zshrc

    source ~/.zshrc

  3. Проверьте ПУТЬ

    echo $PATH