'source… / settings.csh' não está funcionando de 'sh ./test.sh'

0

Eu quero criar o arquivo Xilinx ise setiin64.csh com o comando source .

Eu tenho

source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh

em outro arquivo, test.sh . Então eu quero rodar apenas o arquivo test.sh como

sh ./test.sh 

Mas eu não estou recebendo a versão Xilinx ISE 14.5 quando eu faço which ise .

Se eu executar o comando

source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh

diretamente no terminal, então funciona bem.

    
por Vish 12.07.2016 / 13:58

1 resposta

0

A menos que o script setiin64.csh C-shell seja compatível com sh , source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh de um shell sh não funcionará. Mas você diz que sim, então eu vou ter que aceitar sua palavra.

Você não pode escrever um script que origina esse arquivo e executá-lo com sh test.sh e esperar que as variáveis de ambiente sejam definidas no ambiente shell atual .

O sh test.sh configura um novo ambiente no qual o comando source será usado para fornecer setiin64.csh (ainda acho difícil acreditar que isso realmente funcionará, é um script csh ). Esse novo ambiente será excluído depois que test.sh for executado. Nenhuma variável definida será transferida para o ambiente externo (sua sessão de shell).

Você poderia

source test.sh

Mas isso é exatamente o que você fez desde o início, e você pode também usar um link simbólico para /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh .

A melhor solução é, provavelmente, apenas fornecer o arquivo a partir da linha de comando (ou de um dos seus arquivos de inicialização do shell).

    
por 12.07.2016 / 14:20