obtendo um arquivo dentro de um script

obtendo um arquivo dentro de um script

Gostaria de obter um arquivo dentro de um script tcsh. Em código:

#!/bin/tcsh

unsetenv LD_LIBRARY_PATH
source $1    
echo $LD_LIBRARY_PATH > temp_file

O resultado esperado:A variável de ambiente definida pelo script usando o comando source será impressa em um arquivo temporário.

Resultado atual:O arquivo de origem funciona bem, mas a LD_LIBRARY_PATHvariável permanece vazia.

Alguma idéia de como fazer isso funcionar?


PS tcshÉ claro que não é meu shell preferido, mas tenho um script em funcionamento que configura inúmeras variáveis ​​de ambiente nas tcshquais desejo trabalhar bash. Achei que a maneira mais fácil (além de reescrever o tcshshell todas as vezes) é fornecê-lo, imprimir as variáveis ​​em um arquivo e, com um pouco de magia do shell, recarregar tudo de volta no bash.

Responder1

Eu tentei com csh no OpenBSD. Acho que meu exemplo também funciona com tcsh.

Arquivo teste.csh:

#!/bin/csh
source data.csh
echo $VARIABLE

Arquivo dados.csh

#!/bin/csh
setenv VARIABLE 1234

Resultado:

$ csh test.csh
1234

Responder2

Para referência futura, isso realmente funciona, mas não se deve usar o shebang para o caminho tcsh:

 #!/bin/tcsh 

mas use o caminho para 'env':

 #!/usr/bin/env tcsh

para permitir flexibilidade em sistemas com tcsh instalado em caminhos diferentes. Por exemplo, se 'tcsh' estiver instalado em '/usr/bin/tcsh' então o primeiro falhará, enquanto o último ainda funcionará.

informação relacionada