Só por curiosidade, existe alguma maneira de encontrar o arquivo de onde uma variável como $PATH
, $CDPATH
é ecoada?
Segunda pergunta:
também como o bash sabe sobre essas variáveis? É env
? Se sim, isso é um arquivo? Essas novas variáveis personalizadas podem ser adicionadas?
Resposta da primeira pergunta : a variável $PATH é construída no login a partir do número de arquivos e a saída que você vê quando o faz
echo $PATH
é o resultado do resultado mesclado (mantido na memória).Para descobrir em qual arquivo a variável PATH foi definida (provavelmente será em vários arquivos) você terá que considerar os arquivos que são lidos quando você faz o login. A lista abaixo pode variar um pouco de uma distribuição para outra, mas deve ser um bom ponto de partida.
Resposta da segunda pergunta Como observado acima, as variáveis são mantidas na memória, você pode modificar e adicionar novas conforme desejar. Por exemplo, para adicionar ao PATH já definido:
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 originados 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.
Para que o acima se torne efetivo, faça o login novamente.
$CDPATH Por padrão nas distribuições 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 originados durante o login (como explicado acima de).