2

Я обычно zsh . Я хочу выполнить функцию в Bash и вернуться к моей первоначальной оболочке. Я могу сделать это вручную, но я хочу автоматизировать это. Как я могу это сделать?

Например я на зш. Я хочу выполнить func , который является function() в файле bigscript.sh . Я использую файл bigscript.sh в моем .zshrc Я попытался добавить shebang #!/bin/bash в файле bigscript.sh , но это не меняет оболочку. Я попробовал другой подход - поместить function в отдельный файл function.sh и добавил к нему shebang. Это сработало. Однако я не хочу разбивать файлы на файлы меньшего размера .sh .

Итак, какие-либо предложения по изменению оболочки для одной функции ..?

1 ответ1

2

Обычно, если вы хотите выполнить функцию bash, вам нужно использовать интерпретатор bash. Некоторые функции могут работать в zsh, так как он имеет похожий синтаксис, но есть различия, которые могут сбить вас с толку. Попробуй это.

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

Есть несколько ошибок с этим. Если функция устанавливает переменные или псевдонимы, они не будут видны zsh. Кроме того, если bigscript.sh содержит какой-либо код, который не находится внутри функции, он будет выполнен после завершения поиска, поэтому будьте осторожны. Последнее, что вам нужно, это чтобы bigscript.sh случайно удалил некоторые файлы или сделал другие неожиданные изменения. Если bigscript.sh это просто набор функций, у вас все будет хорошо. Ваша сессия zsh сможет собирать код возврата / выхода функции и любой вывод, который она записывает на стандартный вывод.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .