Por que não consigo exportar com sucesso um caminho dentro de um script bash?

0

Para obter algum código C para compilar corretamente, eu preciso exportar uma pasta para que determinado arquivo seja encontrado.

Na linha de comando, se eu executar pela primeira vez

export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH

e, em seguida, o executável do código C funciona. Se eu não exportar LD_LIBRARY_PATH , o executável falhará, pois o pacote C não consegue encontrar o arquivo necessário, ou seja,

exectuable: error while loading shared libraries: file1.so: cannot open shared object file: No such file or directory

Gostaria agora de executar este código através de um script bash. Aqui está meu script bash, run_stuff.sh :

#!/bin/bash

source ~/.bash_profile

export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH

path/to/executable/executable 

Isso falha, com o erro acima. Eu já tentei

echo "export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH"

dentro do script bash e eu adicionei

export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH

dentro de ~/.bash_profile . Ainda não funciona - o código C não consegue encontrar este arquivo.

Como exportar corretamente uma pasta dentro de um script bash?

    
por ShanZhengYang 26.07.2017 / 18:46

1 resposta

3

1

Pode ser exportado localmente.

#!/bin/bash

LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH path/to/executable/executable 

usando VAR=value cmd irá definir e exportar o VAR para o processo cmd .

2

exporte em duas etapas

#!/bin/bash

LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH

path/to/executable/executable 

é assim que eu faço nos meus scripts. (note que isso contradiz o que o man page diz)

export [-fn] [name[=word]] ...

If a variable name is followed by =word, the value of the variable is set to word.

    
por 26.07.2017 / 18:50