
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_PATH
variá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 tcsh
quais desejo trabalhar bash
. Achei que a maneira mais fácil (além de reescrever o tcsh
shell 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á.