O comando Bash não é executado a partir do script, mas funciona quando inserido no terminal [duplicado]

1

Eu tenho um problema estranho com um script muito simples. Estou configurando LD_LIBRARY_PATH para uma biblioteca. Quando digito este comando no terminal:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/some/path
echo $LD_LIBRARY_PATH

A saída de echo mostrou que o caminho do vinculador foi adicionado corretamente. Mas quando eu coloco exatamente o mesmo comando em um arquivo .sh:

#!bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/some/path

Após a execução, a saída de echo mostrou que o caminho do vinculador não foi adicionado. O script foi definido como executável e executado a partir do diretório correto. Alguém poderia me dizer o que pode ter dado errado? Obrigada!

    
por Muye 03.04.2015 / 04:10

1 resposta

1

Um filho (seu script) pode herdar uma variável do shell pai, mas não o contrário.

Em outras palavras, você pode passar uma variável do shell em que está trabalhando para o script que está sendo executado nesse shell. No entanto, qualquer variável definida no script não funcionará no shell em que você iniciou o script.

A variável no seu script, no entanto, está definida, mas apenas para o shell aberto para o seu script. Se você, por exemplo, adicionar a linha "echo $ LD_LIBRARY_PATH" ao seu script, você receberá o resultado esperado.

Se você quiser definir uma variável para um shell que funcione sempre, coloque-a em seu arquivo .bashrc (ou .bash_profile para OSX).

    
por 03.04.2015 / 04:28

Tags