Não é possível modificar o LD_CONFIG_PATH do script

0

Estou tentando escrever um script que adicione algum caminho para o LD_CONFIG_PATH para não obter " blabla.so not found". O problema é que meu script é capaz de modificar seu próprio contexto (via exportação), mas não afeta outros shells. Eu quero definir a variável globalmente para que ela persista entre reinicializações e shells.

Meu script atual se parece com:

LDPATH='/opt/mqm/lib64'
LD_LIBRARY_PATH="$LDPATH:$LD_LIBRARY_PATH"
ldconfig

que eu corro como

sudo ./set_my_ld_path.sh
$LD_LIBRARY_PATH 

E não retorna nada ( LD_LIBRARY_PATH está vazio).

Eu também tentei

LDPATH='/opt/mqm/lib64' env
LD_LIBRARY_PATH="$LDPATH:$LD_LIBRARY_PATH"
ldconfig

mas apenas grava todas as minhas variáveis existentes, como PATH / LANG / HOME / LC_TIME /...

Por exemplo, posso executar o script a seguir no PowerShell e ele faz o que eu gostaria de ter aqui:

# setting an environment variable for current and descendant processes, same as bash 'export'
$env:OPENCV_DIR = $OPENCV_DIR

# applying it machine-wide, persists between users/shells/reboots
[Environment]::SetEnvironmentVariable("OPENCV_DIR", $env:OPENCV_DIR, [EnvironmentVariableTarget]::Machine)

Como isso pode ser feito?

    
por Alex Zhukovskiy 11.05.2018 / 12:37

1 resposta

4

Em primeiro lugar, as atribuições não podem ter espaços em torno do = .

Em segundo lugar, você nunca pode afetar o ambiente atual de um processo filho (um script).

Para executar um script que define uma variável de ambiente e fazer com que essa alteração afete o ambiente atual, você precisará criar o script usando . (ponto) ou source in bash .

Você também pode não criar um script através de sudo (não está claro por que você está usando sudo neste caso).

Isso significa que você pode ter um arquivo de script como este:

LD_LIBRARY_PATH="/opt/mqm/lib64:$LD_LIBRARY_PATH"

que você usa como fonte

. ./file

ou

source ./file

Definir (e exportar) a variável em seu arquivo de inicialização do shell para shells interativos ( ~/.bashrc se você usar bash ), configuraria "globalmente" (para todos os processos iniciados a partir do shell).

    
por 11.05.2018 / 12:52