Переменная среды, кажется, установлена, но не работает
Я использую Ubuntu 14.10 с оболочкой bash.
Я скачал gradle
дистрибутив и переместил его в новый каталог. Я хочу навсегда установить переменную среды, чтобы указать на bin
подкаталог папки Gradle.
Я редактировал ~/.bashrc
а также ~./profile
в соответствии с рекомендациями, чтобы включить путь к работающему скрипту gradle. Еще когда я печатаю gradle
(это имя скрипта в папке bin), он не запускается. Выйти, перезагрузился и все, но все равно не работает.
Есть что-то, чего я здесь не хватает?
добавил эту строку в конце
.bashrc
экспорт GRADLE=/home/sanctus/ Документы / Разработка /gradle-2.2/bin
мой
~/.profile
Содержимое файла:# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$HOME/sanctus/Documents/Development/gradle-2.2/bin" fi gradle="$HOME/sanctus/Documents/Development/gradle-2.2/bin" export gradle
2 ответа
Прежде всего, вы не хотите делать gradle="..."
, Это просто создает переменную с именем gradle
и не имеет значения (если эта переменная каким-то образом не используется gradle
но ты так не сказал). Что вы хотите сделать, это добавить каталог, содержащий gradle
выполняется в списке каталогов, которые просматривает ваша система при поиске программ для запуска. Это то, что PATH
переменная делает.
Также важно не перезаписывать существующее содержимое PATH
, Итак, чтобы добавить foo
к PATH
, ты сделаешь:
PATH:"$PATH":foo
И не
PATH="foo"
Последний удалит все из PATH
и заменить его на foo
в одиночестве.
Итак, объединяя все это, вы хотите добавить следующие строки в ваш ~/.profile
(или же ~/.bash_profile
если это существует, но не для вашего ~/.bashrc
):
PATH:"$PATH:$HOME/sanctus/Documents/Development/gradle-2.2/bin"
Зачем ~/.profile
или же ~/.bash_profile
и не ~/.bashrc
? Прежде всего потому, что для этого нужен профиль. Важнее, ~/.bashrc
читается каждый раз, когда вы запускаете новую оболочку. Так, например, каждый раз, когда вы открываете новый терминал. Установка переменных среды, которые необходимо установить только один раз в этом файле, сбрасывает их каждый раз, когда вы открываете терминал, и это просто ненужные накладные расходы.
Кроме того, настройки в ~/.bashrc
влияют только на программы, запускаемые из командной строки. Если вы запускаете что-то с помощью графического интерфейса пользователя (пункт меню или .desktop
файл, например) эти переменные не будут доступны там.
Во многих системах, включая Ubuntu, ~/.profile
читается, когда вы входите в систему графически. Поэтому переменные, установленные в этом файле, будут также доступны для программ с графическим интерфейсом. Кроме того, установка этих переменных в ~/.profile
является предпочтительным, поскольку этот файл читается только один раз: при входе в систему.
Кроме того, это будет работать, даже если вы измените свою оболочку на что-то отличное от bash, так как ~/.profile
читается многими из самых популярных оболочек.
Важно: если ~/.bash_profile
существует, что будет читаться вместо ~/.profile
, Итак, если у вас есть такой файл, используйте его вместо этого. Я рекомендую, если у вас есть ~/.bash_profile
, чтобы просто удалить его и добавить все, что было там к вашему стандарту ~/.profile
,
Сначала вы должны убедиться, что ваш скрипт имеет разрешения на выполнение:
chmod +x $HOME/sanctus/Documents/Development/gradle-2.2/bin/gradle
Вам может понадобиться использовать sudo
сделать chmod выше..
Теперь, что вы пропустите, когда вы звоните gradle
вы используете переменную окружения PATH.
PATH - это переменная окружения в Linux и других Unix-подобных операционных системах, которая сообщает оболочке, в каких каталогах искать исполняемые файлы
Даже если вы добавили путь к $PATH, вы сделали это в.profile, в то время как вы должны сделать это в .bashrc
,
Так почему.bashrc, а не.profile?
пожалуйста, посмотрите мой ответ /questions/239481/path-dobavlennyij-vbashprofile-ne-rabotaet-posle-perezagruzki/239484#239484
Теперь вернемся к решению:
gedit .bashrc
Добавьте строку:
export PATH=$PATH:$HOME/bin:$HOME/sanctus/Documents/Development/gradle-2.2/bin
Теперь сохраните и выйдите, затем отправьте его
source .bashrc
Теперь проверь это.
Срочное обновление:
PATH = "$HOME/bin: $ HOME / Sanctus / Документы / Разработка / Gradle-2,2/ бен"
Это исказит ваш PATH, и вы не сможете использовать никакие команды в /bin,/usr/bin,... так как вы просто перезаписываете свой PATH и устанавливаете его только в два каталога $HOME/bin и $HOME/sanctus/Documents/Development/gradle-2.2/bin. Удалите эту строку из вашего.profile.
проверить, влияет ли это на вашу систему,
echo $PATH
Результат должен быть (может немного отличаться):
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Если это не так, вы должны решить проблему. Добавьте это к вашему.profile
$PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games