Encontre o caminho de onde a variável $ CDPATH está localizada?

1

Apenas por curiosidade, existe alguma maneira pela qual eu possa encontrar o arquivo de onde uma variável como $PATH , $CDPATH é ecoada?

Segunda pergunta: Além disso, como o bash sabe sobre essas variáveis? É env ? Se sim, isso é um arquivo? Essas novas variáveis personalizadas podem ser adicionadas?

    
por subtleseeker 11.12.2017 / 09:31

1 resposta

1

Primeira pergunta : variável $ PATH é construída no login do número de arquivos e a saída que você vê quando faz echo $PATH é o resultado do resultado mesclado (mantido na memória).

Para encontrar em qual arquivo a variável PATH foi definida (provavelmente ela estará em vários arquivos), você terá que considerar os arquivos que são lidos ao fazer o login. A lista abaixo pode variar um pouco de uma distribuição para outra, mas deve ser um bom ponto de partida.

/etc/profile, /etc/profile.d/*, /etc/bashrc, /etc/environment, ~/.bashrc, ~/.bash_profile, ~/.bash_login, ~/.profile. 

Segunda pergunta respondida Como observado acima, as variáveis são mantidas na memória, você pode modificar e adicionar novas como desejar. Por exemplo, para adicionar ao PATH já definido:

[root@re ~]# PATH=$PATH:/opt/some/path
[root@re ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/some/path

O acima é válido apenas para a sessão atual. Para torná-lo permanente, precisarei adicioná-lo a um dos arquivos que estão sendo fornecidos durante o login.

Digamos que eu queira adicionar JAVA_HOME e também garantir que o arquivo binário java esteja na variável de caminho do sistema. Vou criar um novo arquivo chamado /etc/profile.d/my-java-env.sh com o seguinte conteúdo.

[root@re ~]# cat /etc/profile.d/my-java-env.sh
# Here we are adding java bin folder to existing path.
PATH=$PATH:/usr/java/jdk1.8.0_20/bin
# Here we are creating new variable pointing to JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_20

Para o acima, tornar-se efetivo login novamente.

$ CDPATH Por padrão nas distros com as quais trabalho (Ubuntu, CentOS) a variável está vazia (não definida), mas a mesma lógica se aplica, se estiver definida, isso provavelmente foi feito em um dos arquivos fornecidos durante o login (conforme explicado acima).

    
por 11.12.2017 / 13:19