J'ai regardé autour de moi et mordu pour trouver une réponse à cette question mais je ne semble pas la trouver (ce qui est étrange).
Ma question est la suivante: existe-t-il un moyen simple de redémarrer la session bash à partir du terminal sur mac? Je veux juste le même comportement que si je fermais l'application de terminal et la redémarrais (toutes les variables réinitialisées, .bash_profile provenant de etc.).
Je sais comment .bash_profile, mais ce n'est pas ce que je veux. Une des raisons pour lesquelles je souhaite procéder est qu’un plugin pour mon invite bash contient un code qui empêche le chargement des couleurs plusieurs fois. Par conséquent, l'approvisionnement en .bash_profile ne recharge pas les variables de couleur et je dois redémarrer l'application de terminal pour que les modifications prennent effet.
exec bash
redémarre-t-il alors ce shell interactif? Aussi, pouvez-vous expliquer exactement ce que fait la commande exec et ses options? Merci!man bash
, recherchez la dernière instance de la chaîne SHELL BUILTIN COMMANDS, puis faites défiler jusqu'à exec. En bref, passer le-c
drapeau le fera fonctionner sans aucune variable d’environnement (ce qui pourrait être nécessaire pour vos besoins, je ne sais pas), et les autres arguments -l et -a ne sont probablement pas des choses que vous voulez (elles semblent historiques). / caractéristiques obscures et spécifiques). Vous pouvez également utiliser exec pour ouvrir de nouveaux descripteurs de fichier dans le shell actuel, si vous oubliez la commande.-l
voici un argument pour bash et le fait se comporter comme un shell de connexion. L'ouverture de descripteurs de fichier dans le shell actuel n'a rien à voir avec votre question, mais vous pouvez utiliser,exec 4<>test.txt
par exemple, le pointeur de fichier à 4 points vers test.txt. Ensuite, dans le reste de votre shell, vous pouvezecho test>&4
afficher le fichier test.txt.La réponse acceptée est excellente pour un shell qui utilise bash, ce qui est également ce que l'OP a demandé. Cependant, j'utilise Terminal sur macOS avec un shell autre que celui par défaut (zsh) et l'exécution de la commande
exec bash
n'a évidemment pas l'effet souhaité. : il lance bash au lieu de mon shell par défaut.Ainsi, la commande
exec $SHELL
indépendante de l'environnement utilise la variable d'environnement$SHELL
qui stocke le shell par défaut pour l'utilisateur.Notez également qu'Apple remplacera bash par zsh dans macOS Catalina afin d’obtenir l’effet recherché par le PO,
exec zsh
ouexec $SHELL
sera le moyen à utiliser après la mise à jour vers macOS 10.15.la source