Como definir permanentemente as variáveis ambientais

208

Minhas variáveis são

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64

Como salvar essas variáveis permanentemente?

    
por user3021349 28.02.2014 / 14:36

3 respostas

226

Você pode adicioná-lo ao arquivo .profile ou ao seu arquivo de perfil do shell de login (localizado em seu diretório pessoal).

Para alterar a variável ambiental "permanentemente", é necessário considerar pelo menos estas situações:

  1. Cone login / não-login
  2. Concha interativa / não interativa

bash

  1. Bash enquanto o shell de login carrega /etc/profile , ~/.bash_profile , ~/.bash_login , ~/.profile na ordem
  2. Bash como shell interativo sem logon carregará ~/.bashrc
  3. Bash como shell não interativo de logon não irá carregar a configuração especificada na variável de ambiente $BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

zsh

$EDITOR ~/.zprofile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

ksh

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

bourne

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib     
     ORACLE_HOME=/usr/lib/oracle/11.2/client64
     export LD_LIBRARY_PATH ORACLE_HOME

csh ou tcsh

$EDITOR ~/.login
#add lines at the bottom of the file:  
     setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
     setenv ORACLE_HOME /usr/lib/oracle/11.2/client64

Se você quiser torná-lo permanente para todos os usuários, edite os arquivos correspondentes em /etc/ , ou seja, /etc/profile para shells semelhantes a Bourne, /etc/csh.login para (t) csh e /etc/zsh/zprofile e /etc/zsh/zshrc para zsh.

Outra opção é usar /etc/environment , que nos sistemas Linux é lido pelo módulo PAM pam_env e suporta apenas atribuições simples, não expansões no estilo shell. (Veja o guia do Debian sobre isso.)

Esses arquivos provavelmente já contêm algumas atribuições, portanto, siga a sintaxe que você já está presente no seu arquivo.

Certifique-se de reiniciar o shell e relogar o usuário para aplicar as alterações.

Se você precisar adicionar uma variável de ambiente do sistema, agora há /etc/profile.d pasta que contém sh script para inicializar a variável.
Você poderia colocar seu script sh com todas as variáveis exportadas aqui.
Tenha cuidado, embora isso não deva ser usado como uma maneira padrão de adicionar variáveis ao env no Debian.

    
por 18.10.2018 / 13:55
65

Para fazer se para todos os usuários / shells, dependendo da distro você pode usar /etc/environment ou /etc/profile . Criar um novo arquivo em /etc/profile.d pode ser preferível se existir, pois será menos provável que entre em conflito com as atualizações feitas pelo sistema de empacotamento.

Em /etc/environment , as variáveis geralmente são definidas com name=value , por exemplo:

ORACLE_HOME=/usr/lib/oracle/11.2/client64

Em /etc/profile , você deve usar export , já que este é um script, por exemplo:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

O mesmo vale para um arquivo em /etc/profile.d ; também pode haver restrições de nomenclatura que devem ser atendidas para que o arquivo funcione. No Debian, o arquivo deve ter a extensão .sh (embora não precise de uma linha de execução ou permissões executáveis, pois é originado). verifique sua documentação de distribuição ou examine o script /etc/profile para ver como esses arquivos são carregados.

Note também que a configuração LD_LIBRARY_PATH permanentemente é potencialmente problemática , incluindo ser um risco de segurança. Como alternativa, sugiro que você encontre uma maneira de preceder o LD_LIBRARY_PATH ao início da linha de comando para cada programa que precise dele antes de executá-lo. Por exemplo:

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog

Uma maneira de fazer isso é usar um script de wrapper para executar o programa. Você poderia dar a este o mesmo nome do seu programa e colocá-lo em /usr/local/bin ou em qualquer lugar que aparecer antes da localização do seu programa em PATH . Aqui está um script de exemplo (não se esqueça de chmod +x do script):

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"
    
por 28.02.2014 / 15:04
1

quando você instala o oracle, o oracle pediu que você executasse alguns scripts antes de clicar em ok. Esse script colocou uma configuração fictícia no diretório inicial do usuário .bash_profile in oracle. Para ver o arquivo, ls -al mostrará todos os arquivos ocultos.

digite nano bash_profile para abrir o arquivo. Faça alterações no arquivo para refletir seu nome de host e nome sid apropriado. verifique quaisquer outras configurações que precisem de modificação. pressione control x para salvar e digite y quando perguntado se deseja salvar. Pressione a tecla de retorno para salvar. Reinicie o computador. Registrando como usuário oracle. inicie o banco de dados digitando

sqlplus / as sysdba

startup  
    
por 03.09.2015 / 14:39