web-dev-qa-db-fra.com

Redémarrez bash depuis le terminal sans redémarrer l'application de terminal (mac)?

J'ai regardé autour de moi et j'ai mordu pour une réponse à cette question mais je ne semble pas la trouver (ce qui est bizarre).

Ma question est, 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 sont réinitialisées, source .bash_profile, etc.).

Je sais comment générer .bash_profile, mais ce n'est pas ce que je veux. L'une des raisons pour lesquelles je veux le faire est qu'un plugin pour mon invite bash a du code qui empêche les couleurs d'être chargées plusieurs fois. Par conséquent, le sourcing .bash_profile ne recharge pas les variables de couleur et je dois redémarrer l'application de terminal pour que les modifications soient effectives.

49
Mattias

exec bash devrait remplacer le processus Shell actuel par (une nouvelle instance de) bash.

73
Muzer

La réponse acceptée est idéale 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 non par défaut (zsh) et j'exécute la commande exec bash n'a évidemment pas l'effet souhaité: il lance bash au lieu de mon Shell par défaut.

La commande indépendante de l'environnement serait donc exec $Shell qui utilise la variable d'environnement $Shell qui stocke le Shell par défaut pour l'utilisateur.

Notez également que Apple remplacera bash par zsh dans macOS Catalina afin d'avoir l'effet que l'OP cherche à exécuter soit exec zsh ou exec $Shell sera la voie à suivre après la mise à jour vers macOS 10.15.

4
phip