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


49

Lorsque j'apporte des modifications au comportement shell / bash, telles que la configuration d'un alias, une commande rapide permet-elle de réinitialiser la fenêtre du terminal au lieu de fermer et d'ouvrir une nouvelle fenêtre?

Réponses:


51

Si vous parlez de recharger votre configuration .bashrc, alors:

source ~/.bashrc

Pour moins de frappe, vous pouvez remplacer sourcepar un point:. ~/.bashrc


2
Voici une question, comment cela se comporte-t-il différemment source ~/.bashrc?
Crasic

Ce n'est pas. En regardant la page de manuel bash, vous verrez que les commandes sont listées comme équivalentes.
Carsten Thiel

2
sourceest spécifique à bash. .est plus standard. Les deux fonctionnent de la même manière en bash.
Michael Terry

1
Cela recharge simplement votre PATH et certaines variables d’environnement. Cela ne "réinitialise" rien. La réponse de @ NDA est la bonne.
Cerin

2
Cela ne réinitialise rien, si vous aviez des mises à jour de votre PATH, vous aurez maintenant vos anciennes mises à jour et nouvelles mises à jour.
Constantin

39

Quelques ajouts trouvés dans la page de manuel à partir de la commande reset / tset

tset réinitialiser l'initialisation du terminal

commander: reset

Tset initialise les terminaux. Tset commence par déterminer le type de terminal que vous utilisez. Cette détermination est effectuée comme suit, en utilisant le premier type de terminal trouvé.

un avantage semble être qu'il est indépendant de la coque utilisée. travaille également avec du poisson ici.

Donc, pour réinitialiser un terminal, il suffit de-

$ tset

OU

$ reset

Malheureusement, cela est également faux. Il ne réinitialise pas les variables d'environnement existantes.
Isarandi

9

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

$ exec bash --login

Cela lira également votre profil. Cela ne ferait pas de mal d'ajouter également l' -ioption d'indiquer explicitement à bash qu'il s'agit d'un shell interactif, mais il peut normalement s'en rendre compte par lui-même.


pour moi cela fonctionne aussi sans exec
Armen Sanoyan

Malheureusement faux aussi. Les variables d'environnement déjà définies sont toujours présentes et ne sont pas réinitialisées.
Isarandi

6

Vous devez remplacer l'application / shell en cours d'exécution par une nouvelle instance. Par exemple, si vous utilisez bashcomme 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 / le shell en cours d'exécution est remplacé par une nouvelle instance de bashtype like, partant de zéro. Toutes vos modifications précédentes ont disparu.

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


2
Qu'entendez-vous par "reprogrammé"?
Eliah Kagan

0

votre shell est un exécutable que vous pouvez appeler. Donc, si vous utilisez bash, vous pouvez appeler bashet si vous utilisez autre chose comme zsh, vous pouvez simplement entrerzsh


0

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

Si vous souhaitez également les commandes précédemment entrées à disapper (réinitialisation complète du terminal), le combiner avec resetcommereset; exec sudo --login --user $USER

Il existe de nombreuses réponses sur le Web, mais la plupart ne fonctionnent pas. Un moyen facile de tester consiste à configurer export SOMEVAR=42puis à exécuter la commande supposément réinitialisée echo $SOMEVAR. Si c'est 42, l'environnement n'a pas été réinitialisé.

Il y a aussi exec -c bash -lou exec env -i bash -l, mais ceux-ci sont cassés, la variable $ HOME n'est pas définie après cela.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.