2 votes

exécuter la fonction dans un autre Shell.

En général, je zsh . Je veux exécuter une fonction dans bash et revenir à mon Shell d'origine. Je peux le faire manuellement, mais je veux l'automatiser. Comment faire ?

Par exemple, je suis sur zsh. Je veux exécuter func qui est un function() en bigscript.sh dossier. Je me procure le bigscript.sh dans mon fichier .zshrc J'ai essayé d'ajouter le shebang #!/bin/bash dans le bigscript.sh mais cela ne change pas le Shell. J'ai essayé une autre approche en mettant function dans le cadre d'un projet autonome function.sh et y a ajouté le "shebang". Cela a fonctionné. Cependant, je ne veux pas diviser les fichiers en plus petits fichiers. .sh des dossiers.

Alors, des suggestions pour changer le Shell pour une seule fonction ?

2voto

virtex Points 1229

En général, si vous voulez exécuter une fonction bash, vous devez utiliser l'interpréteur bash. Certaines fonctions peuvent fonctionner dans zsh, qui a une syntaxe similaire, mais il y a des différences qui peuvent vous gêner. Essayez ceci.

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

Il y a quelques pièges à éviter. Si la fonction définit des variables ou des alias, ceux-ci ne seront pas visibles par zsh. De même, si bigscript.sh contient du code qui n'est pas à l'intérieur d'une fonction, il sera exécuté lorsque le sourçage sera effectué, soyez donc prudent. La dernière chose que vous voulez, c'est que bigscript.sh de supprimer accidentellement certains fichiers ou d'effectuer d'autres modifications inattendues. Si bigscript.sh n'est qu'une collection de fonctions, tout devrait bien se passer. Votre session zsh sera capable de collecter le code de retour/de sortie de la fonction et toute sortie qu'elle écrit sur stdout.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X