Переменная среды, кажется, установлена, но не работает

Я использую Ubuntu 14.10 с оболочкой bash.

Я скачал дистрибутив gradle и переместил его в новый каталог. Я хочу навсегда установить переменную среды, чтобы она указывала на подкаталог bin папки gradle.

Я отредактировал ~/.bashrc и ~./profile в соответствии с рекомендациями, чтобы включить путь к работающему скрипту Gradle. Тем не менее, когда я набираю gradle (это имя скрипта в папке bin), он не запускается. Выйти, перезагрузиться и все, но все равно не работает.

Есть ли что-то, чего мне здесь не хватает?

  1. добавили эту строку в конце .bashrc

    export GRADLE = / home / sanctus / Documents / Development /gradle-2.2/bin

  2. Содержимое моего ~/.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
    
0
задан 13 June 2015 в 16:57

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 только влияйте на программы, запущенные от командной строки. Если Вы запускаете что-то с помощью GUI (запись меню или a .desktop файл, например), те переменные не будут доступны там.

Во многих системах, включая Ubuntu, ~/.profile читается, когда Вы входите в систему графически. Набор переменных в том файле поэтому будет доступен программам GUI также. Кроме того, устанавливая эти переменные в ~/.profile предпочтен, так как тот файл только читается однажды: при входе в систему.

Кроме того, это будет работать даже при изменении оболочки на что-то другое, чем удар с тех пор ~/.profile читается многими самыми популярными оболочками.

Важный: если a ~/.bash_profile существует, который будет считан вместо ~/.profile. Так, если у Вас действительно есть такой файл, используйте тот вместо этого. Моя рекомендация, если у Вас есть a ~/.bash_profile, просто удалить его и добавить что-либо, что было там к Вашему стандарту ~/.profile.

6
ответ дан 13 June 2015 в 16:57

Сначала необходимо удостовериться, что сценарий имеет, выполняют полномочия:

chmod +x $HOME/sanctus/Documents/Development/gradle-2.2/bin/gradle

Вы, возможно, должны использовать sudo, чтобы сделать chmod выше..

Теперь, что Вы пропускаете, когда Вы звоните gradle, Вы используете переменную среды ПУТЬ .

ПУТЬ является переменной окружения в Linux и других подобных Unix операционных системах, который говорит оболочку, какие каталоги искать исполняемые файлы

Даже при том, что Вы добавляете путь к $PATH, Вы сделали это в .profile, в то время как необходимо сделать это в .bashrc.

Итак, почему .bashrc и не .profile?

смотрите для моего ответа 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
0
ответ дан 13 June 2015 в 16:57

Другие вопросы по тегам:

Похожие вопросы: