echo $ PATH não reflete o “PATH de exportação” que fiz no shell script

0

Eu criei um script de shell que verificará se um determinado valor existe em PATH . Caso contrário, ele adicionará esse valor à variável de ambiente PATH .

Foi adicionado com sucesso, com base na execução de echo $PATH dentro do script de shell. Mas quando tentei executar echo $PATH na linha de comando, isso não reflete as alterações feitas.

Aqui está o meu código:

#!/bin/bash
postgresPath="/opt/PostgreSQL/9.2/bin"
echo "Checking PATH env.."
[[ ":$PATH:" != *"$postgresPath"* ]] && export PATH="${PATH}:$postgresPath"
echo $PATH

link

    
por john1717 27.09.2017 / 09:14

1 resposta

4

O script é executado em seu próprio ambiente. Ele não pode afetar o ambiente de seu shell pai (a partir do qual você inicia o script), ou seja, alterar $PATH em um script não alterará $PATH no seu shell interativo.

Um pequeno exemplo disso:

$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin

$ ( PATH="hello"; echo "$PATH" )
hello

$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin

(não importa se eu export a variável PATH novamente no subshell desde que já é exportado)

Sugiro o fornecimento do script com . ou source , que executaria os comandos no mesmo ambiente que o shell atual ou transformaria o script em uma função de shell.

    
por 27.09.2017 / 09:29