Environment Variable parece estar definido ainda não funcionando

0

Eu uso o Ubuntu 14.10 com o bash shell.

Eu baixei uma distribuição gradle e a movi para um novo diretório. Desejo definir permanentemente uma variável de ambiente para apontar para o subdiretório bin da pasta gradle.

Eu editei ~/.bashrc e ~./profile de acordo com as recomendações para incluir o caminho para o script em execução do gradle. No entanto, quando digito gradle (que é o nome do script na pasta bin), ele não é executado. Desconectado, reiniciado e tudo, mas ainda assim não funciona.

Há algo que eu esteja sentindo falta aqui?

  1. adicionou esta linha no final de .bashrc

    export GRADLE = / home / sanctus / Documentos / Desenvolvimento / gradle-2.2 / bin

  2. O conteúdo do meu arquivo ~/.profile é o seguinte:

    # ~/.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
    
por George D 13.06.2015 / 14:57

2 respostas

6

Primeiro de tudo, você não quer fazer gradle="..." . Isso simplesmente cria uma variável chamada gradle e é irrelevante (a menos que essa variável seja de alguma forma usada por gradle , mas você não disse isso). O que você quer fazer é adicionar o diretório contendo o executável gradle à lista de diretórios que seu sistema pesquisa ao tentar encontrar programas para executar. Isso é o que a variável PATH faz.

Também é importante não sobrescrever o conteúdo existente de PATH . Então, para adicionar foo ao PATH , você faz:

PATH:"$PATH":foo

E não

PATH="foo"

O último removerá tudo de PATH e o substituirá por foo sozinho.

Portanto, combinando tudo isso, você deseja adicionar as seguintes linhas ao seu ~/.profile (ou ~/.bash_profile , se existir, mas não ao seu ~/.bashrc ):

PATH:"$PATH:$HOME/sanctus/Documents/Development/gradle-2.2/bin"

Por que ~/.profile ou ~/.bash_profile e não ~/.bashrc ? Primeiro de tudo, porque é para isso que serve o perfil. Mais importante, ~/.bashrc é lido sempre que você inicia um novo shell. Então, por exemplo, toda vez que você abre um novo terminal. Definir variáveis ambientais que só precisam ser definidas uma vez nesse arquivo, faz com que sejam redefinidas sempre que você abrir um terminal e isso é apenas uma sobrecarga desnecessária.

Além disso, as configurações em ~/.bashrc afetam apenas programas iniciados a partir da linha de comando. Se você iniciar algo usando a GUI (uma entrada de menu ou um arquivo .desktop , por exemplo), essas variáveis não estarão disponíveis lá.

Em muitos sistemas, incluindo o Ubuntu, ~/.profile é lido quando você faz login graficamente. As variáveis definidas nesse arquivo estarão, portanto, disponíveis para os programas GUI. Além disso, a configuração dessas variáveis em ~/.profile é preferencial, pois esse arquivo é lido apenas uma vez: no login.

Além disso, isso funcionará mesmo se você alterar seu shell para algo diferente de bash, já que ~/.profile é lido por muitos dos shells mais populares.

Importante : se houver um ~/.bash_profile , ele será lido em vez de ~/.profile . Portanto, se você tiver esse arquivo, use esse arquivo. Minha recomendação é, se você tiver um ~/.bash_profile , simplesmente excluí-lo e adicionar algo que estava lá ao seu padrão ~/.profile .

    
por terdon 13.06.2015 / 17:00
0

Primeiro, você deve garantir que seu script tenha permissões de execução:

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

Você pode precisar usar sudo para fazer o chmod acima.

Agora, o que você sente falta, quando você chama gradle , está usando a variável de ambiente PATH .

% bl0ck_qu0te%

Mesmo que você adicione o caminho para $ PATH, você fez isso no .profile, enquanto você tem que fazê-lo no .bashrc .

Então, por que .bashrc e não .profile?

por favor, dê uma olhada na minha resposta link

Agora, de volta à solução:

gedit .bashrc

Adicione a linha:

 export PATH=$PATH:$HOME/bin:$HOME/sanctus/Documents/Development/gradle-2.2/bin

Agora salve e saia e depois faça a fonte

source .bashrc

Agora teste-o.

Atualização urgente:

% bl0ck_qu0te%

Isto distorceria seu PATH, e você não pode usar nenhum comando em / bin, / usr / bin, ... já que assim você simplesmente sobrescreve seu PATH e o configura apenas para dois diretórios $ HOME / bin e $ HOME / sanctus / Documentos / Desenvolvimento / gradle-2.2 / bin. Remova esta linha do seu perfil.

teste se afeta seu sistema,

echo $PATH 

o resultado deve ser (talvez um pouco diferente):

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Se não, você deve resolver o problema. Adicione isto ao seu .profile

$PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    
por Maythux 13.06.2015 / 15:05