Переменная среды, кажется, установлена, но не работает
Я использую 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