82 votes

Comment réinitialiser une fenêtre de terminal au lieu de la fermer et d'en ouvrir une nouvelle ?

Lorsque j'apporte quelques modifications au comportement de Shell/bash, comme la mise en place d'un alias, existe-t-il une commande rapide pour réinitialiser la fenêtre du terminal au lieu de fermer et d'ouvrir une nouvelle fenêtre ?

77voto

John Points 31

Si vous voulez dire recharger votre configuration .bashrc alors :

source ~/.bashrc

Pour une saisie moindre, vous pouvez remplacer source avec un point : . ~/.bashrc

11voto

Tony Ledford Points 127

Une option supplémentaire à la exec bash c'est que si vous avez changé votre .profile (ou .bash_profile ), vous pouvez faire

$ exec bash --login

Cela permettra de relire votre profil également. Ça ne ferait pas de mal d'ajouter le -i pour indiquer explicitement à bash qu'il s'agit d'un Shell interactif, mais il peut normalement s'en rendre compte par lui-même.

8voto

Raphael Bossek Points 420

Vous devez remplacer l'application en cours d'exécution/Shell avec une nouvelle instance. Par exemple, si vous utilisez bash comme votre Shell préféré, tapez la ligne suivante dans votre ligne de commande ( $ est l'espace réservé pour le début de votre ligne de commande) :

> $ exec bash

L'application en cours d'exécution/Shell est remplacée par une nouvelle instance de bash comme repartir de zéro. Toutes vos modifications précédentes ont disparu.

Remarques : N'oubliez pas que votre application terminale peut être reprogrammée. Vous devez réinitialiser votre application terminale manuellement.

8voto

isarandi Points 347

Utilisez exec sudo --login --user $USER .

Si vous souhaitez également que les commandes précédemment saisies disparaissent (réinitialisation complète du terminal), combinez-la avec reset comme reset; exec sudo --login --user $USER .

Pour conserver également le répertoire de travail actuel, utilisez la fonction suivante :

reinit(){
  reset
  exec sudo --login --user "$USER" /bin/sh -c "cd '$PWD'; exec '$SHELL' -l"
}

Il existe de nombreuses réponses sur le web, mais la plupart ne fonctionnent pas. Un moyen simple de tester est de définir export SOMEVAR=42 puis exécuter la commande de réinitialisation supposée et faire echo $SOMEVAR . Si c'est 42, l'environnement n'a pas été réinitialisé.

Il existe également exec -c bash -l o exec env -i bash -l mais ils ne fonctionnent pas, la variable $HOME n'est pas définie après cela.

0voto

Alvaro Rodriguez Points 1382

Votre Shell est un exécutable que vous pouvez appeler. Donc si vous utilisez bash vous pouvez appeler bash et si vous utilisez quelque chose d'autre comme zsh, vous pouvez simplement entrer zsh

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