Я использую Ubuntu 14.10 с оболочкой bash.
Я скачал дистрибутив gradle
и переместил его в новый каталог. Я хочу навсегда установить переменную среды, чтобы она указывала на подкаталог bin
папки gradle.
Я отредактировал ~/.bashrc
и ~./profile
в соответствии с рекомендациями, чтобы включить путь к работающему скрипту Gradle. Тем не менее, когда я набираю gradle
(это имя скрипта в папке bin), он не запускается. Выйти, перезагрузиться и все, но все равно не работает.
Есть ли что-то, чего мне здесь не хватает?
добавили эту строку в конце .bashrc
export GRADLE = / home / sanctus / Documents / Development /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
В первую очередь, Вы не хотите делать 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
только влияйте на программы, запущенные от командной строки. Если Вы запускаете что-то с помощью GUI (запись меню или a .desktop
файл, например), те переменные не будут доступны там.
Во многих системах, включая Ubuntu, ~/.profile
читается, когда Вы входите в систему графически. Набор переменных в том файле поэтому будет доступен программам GUI также. Кроме того, устанавливая эти переменные в ~/.profile
предпочтен, так как тот файл только читается однажды: при входе в систему.
Кроме того, это будет работать даже при изменении оболочки на что-то другое, чем удар с тех пор ~/.profile
читается многими самыми популярными оболочками.
Важный: если a ~/.bash_profile
существует, который будет считан вместо ~/.profile
. Так, если у Вас действительно есть такой файл, используйте тот вместо этого. Моя рекомендация, если у Вас есть a ~/.bash_profile
, просто удалить его и добавить что-либо, что было там к Вашему стандарту ~/.profile
.
Сначала необходимо удостовериться, что сценарий имеет, выполняют полномочия:
chmod +x $HOME/sanctus/Documents/Development/gradle-2.2/bin/gradle
Вы, возможно, должны использовать sudo
, чтобы сделать chmod выше..
Теперь, что Вы пропускаете, когда Вы звоните gradle
, Вы используете переменную среды ПУТЬ .
ПУТЬ является переменной окружения в Linux и других подобных Unix операционных системах, который говорит оболочку, какие каталоги искать исполняемые файлы
Даже при том, что Вы добавляете путь к $PATH, Вы сделали это в .profile, в то время как необходимо сделать это в .bashrc
.
смотрите для моего ответа https://askubuntu.com/a/633820/150504
Теперь назад к решению:
gedit .bashrc
Добавляют строку:
export PATH=$PATH:$HOME/bin:$HOME/sanctus/Documents/Development/gradle-2.2/bin
Теперь сохраняют и выходят, тогда получают его
source .bashrc
Теперь тест это.
<час>ПУТЬ =" $HOME/bin: $HOME/sanctus/Documents/Development/gradle-2.2/bin"
Это исказило бы Ваш ПУТЬ, и Вы не можете использовать команду в / мусорном ведре,/usr/bin... с тех пор как этот Вы просто переопределяете свой ПУТЬ и устанавливаете его только на два $HOME/bin директоров и $HOME/sanctus/Documents/Development/gradle-2.2/bin. Удалите эту строку из своего .profile.
тест, если это влияет на Ваш syste,
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