Как я могу добавить путь к переменной среды PATH?


11

Я хочу добавить путь к PATHпеременной среды?

Я пытался с, export PATH=/mypath:$PATHи это работает. Но в следующий раз, когда я запускаю Терминал, мой новый путь больше не является PATHпеременной среды.

Как я могу добавить путь к PATHпеременной среды? и это должно быть там также при следующем запуске Терминала.


У меня опять проблемы с этим, уловка, которая работала раньше, похоже, больше не работает.

Я пытался с:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

добавить две переменные среды. Тогда мой ~/.profile-файл имеет такой контент:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

Но когда я запускаю новое окно терминала и набираю gradle(команду, к которой я добавил PATH), я получаю сообщение о том, что команда не существует. Если я запускаю команду, то /Users/jonas/gradle-1.2/binона отлично работает!


Если вам случится что-то испортить, см. Также: Сброс переменной PATH
Яри ​​Кейнянен,

1
Назначение для PATH (второй экспорт) должно быть с $ GRADLE_HOME
nohillside

Ответы:


5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile должен сделать трюк!

Если бы вы использовали echo 'export PATH=/my/path:$PATH' > ~/.bash_profileили любой другой вариант, вы бы переписали содержимое своего профиля!


9

OSX читает следующие файлы по порядку при открытии терминала:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

Так что поместите свое дополнение пути в один из них. Я обычно помещаю дополнения в~/.bash_profile


2
Спасибо, я использовалecho 'export PATH=/mypath:$PATH' >> ~/.profile
Джонас

3

В дополнение к местам, упомянутым @RobZolkos, оболочка входа также просматривает /etc/pathsи файлы внутри /etc/paths.d/. Одна запись пути на строку в этих файлах.

Смотрите /etc/profileи страницу руководства для path_helper.


Хорошо, спасибо! но самая большая проблема заключалась в том, как добавить путь. Но я нашелecho 'export PATH=/mypath:$PATH' >> ~/.profile
Джонас

@Jonas: я понял, что твоя проблема решена. Мой ответ был предназначен для будущих читателей, чтобы они могли видеть все доступные им варианты.
Харальд Ханче-Олсен

2

Старый вопрос, но для пользователей MacOS X Catalina:

Создать / редактировать ~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

Обратите внимание , что изменения PATHв ~/.zprofileили ~/.zshrcне является правильным, оно должно быть ~/.zshenv.

Если вам нужно что-то добавить PATH, далее создайте / отредактируйте ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Ссылка: http://zsh.sourceforge.net/Intro/intro_3.html


Что вы имеете в виду под «Если вам нужно подготовиться к ПУТИ», и почему это тоже нельзя сделать .zshenv?
холме

@nohillside: Извините за мою плохую грамматику, но хороший вопрос. Если вы пытаетесь что - то предварять к PATHв ~/.zshenvпо PATH="to/your/path:$PATH", без линий в ~/.zprofile, он не будет работать. Нечто вызывающее path_helperпереместит их /usr/local/bin/:/usr/bin:...на передний план PATH.
Дождь

Короче говоря, это вопрос порядка загрузки. path_helperбудет выполнен после, ~/.zshenvно раньше ~/.zproflie. И из моего сегодняшнего исследования я бы порекомендовал использовать символическую ссылку вместо модификации PATH, что намного проще.
дождь

0

Вставьте в .bashrc эти строки кода:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

затем введите команду как: pathadd /opt/local/binили pathadd /opt/local/bin after.


Обратите внимание на две функции в init- Финка github.com/fink/base-files/blob/master/init.sh.in
fd0
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.