Configurando a variável de ambiente para todo o sistema usando o / etc / environment

5

Eu quero adicionar ao meu PATH para que meu computador (Ubuntu) saiba onde interpretar o comando "R" (para iniciar o R). Eu preciso disso, então um Terminal ou RStudio pode encontrar onde eu instalei o R.

Eu fiz todos os itens a seguir, nenhum dos quais associa permanentemente o comando R com o diretório de instalação do meu R em ~/R/bin .

  1. export PATH=$PATH:$HOME/R/bin & lt; - Isso funciona dentro da sessão do Terminal em que foi decretado, mas se eu abrir um segundo terminal, o PATH voltará ao que era antes de adicionar $ HOME / R / bin a ele

O mesmo comportamento "Apenas terminal local" ocorreu quando adicionei esta linha a dois arquivos diferentes, com base em recomendações em vários sites:

  1. sudo vim ~/.profile

    export PATH=$PATH:$HOME/R/bin
    
  2. sudo vim /etc/environment

    export PATH=$PATH:$HOME/R/bin
    

Por que o R não será reconhecido em novas sessões do Terminal?

    
por areyoujokingme 09.12.2015 / 00:06

1 resposta

7

O arquivo /etc/environment não é um arquivo de script: AFAIK, você não pode usar export e não suporta expansão variável do tipo $HOME , apenas pares variable=value simples. Então, para usar esse arquivo, basta anexar seu caminho à definição existente, como

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/R/bin"

No entanto, definir o todo o sistema PATH para incluir o diretório pessoal de um usuário dessa maneira é uma prática questionável IMHO: a maneira normal seria usar um dos próprios arquivos de inicialização do shell do usuário : ~/.profile é geralmente o recomendado para variáveis de ambiente, no entanto, tem a desvantagem de ser invocado apenas por shells de login, então para que ele tenha efeito você precisará sair e voltar - ou pelo menos, iniciar um novo shell de login, por exemplo usando

    su - username

ou

    su -l username

Observe que sudo não deve ser usado para editar esses arquivos pessoais , pois isso provavelmente os deixará de propriedade de root , o que pode causar mais problemas no futuro. Se você já usou sudo vim , pode ser necessário usar sudo chown para restaurar a propriedade correta, por exemplo,

sudo chown username:username ~/.profile

Depois, você pode adicionar o componente de caminho desejado usando seu editor preferido, por exemplo,

vim ~/.profile

Você pode até considerar copiar o paradigma existente para ~/bin nesse arquivo, ou seja, adicioná-lo como

# set PATH so it includes user's private R bin if it exists
if [ -d "$HOME/R/bin" ] ; then
    PATH="$HOME/R/bin:$PATH"
fi
    
por steeldriver 09.12.2015 / 01:56