executa a função no shell diferente

2

Eu geralmente zsh . Eu quero executar uma função no bash e retornar ao meu shell original. Eu posso fazer isso manualmente, mas eu quero automatizá-lo. Como posso fazer isso?

Por exemplo, estou em zsh. Eu quero executar func , que é um arquivo function() in bigscript.sh . Estou pesquisando o arquivo bigscript.sh no meu .zshrc Eu tentei adicionar shebang #!/bin/bash no arquivo bigscript.sh , mas isso não altera o shell. Eu tentei outra abordagem de colocar function em um arquivo function.sh autônomo e adicionei shebang a ele. Funcionou. No entanto, não quero dividir os arquivos em arquivos .sh menores.

Então, alguma sugestão sobre a alteração do shell para uma única função ...?

    
por Akshayraj Kore 22.02.2018 / 20:59

1 resposta

2

Geralmente, se você quiser executar uma função bash, você precisará usar o intérprete bash. Algumas funções podem funcionar em zsh, pois possui uma sintaxe semelhante, mas existem diferenças que podem estar atrapalhando. Tente isso.

bash -c 'source bigscript.sh && func'

Há alguns tem que fazer isso. Se a função estiver configurando variáveis ou aliases, eles não estarão visíveis para zsh. Além disso, se bigscript.sh contiver qualquer código que não esteja dentro de uma função, ele será executado quando o fornecimento for concluído, portanto, tenha cuidado. A última coisa que você deseja é que bigscript.sh apague acidentalmente alguns arquivos ou faça outras alterações inesperadas. Se bigscript.sh é apenas uma coleção de funções, você deve estar bem. Sua sessão zsh poderá coletar o código de retorno / saída da função e qualquer saída gravada no stdout.

    
por 22.02.2018 / 21:32