Para referência futura, isso realmente funciona, mas não se deve usar o shebang:
#!/bin/tcsh
mas use:
#!/usr/bin/env tcsh.
Gostaria de criar um arquivo dentro de um script tcsh. No 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 real: O arquivo originado é executado corretamente, mas a variável LD_LIBRARY_PATH
permanece vazia.
Alguma idéia de como fazer isso funcionar?
PS tcsh
não é, obviamente, o shell de minha escolha, mas eu tenho um script no trabalho que configura várias variáveis de ambiente em tcsh
que eu quero trabalhar em bash
. Eu percebi que a maneira mais fácil (além de reescrever o tcsh
shell a cada vez) é obtê-lo, imprimir as variáveis em um arquivo, e com um pouco de magia de shell, re-source everthing de volta no bash.
Eu tentei com o csh no OpenBSD. Eu acho que meu exemplo funciona também com tcsh.
Arquivo test.csh:
#!/bin/csh
source data.csh
echo $VARIABLE
Arquivo data.csh
#!/bin/csh
setenv VARIABLE 1234
Resultado:
$ csh test.csh
1234