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?

NDA
la source

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

narkisr
la source
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
NDA
la source
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.

Tony Ledford
la source
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.

Raphael Bossek
la source
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

Meule
la source
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.

Isarandi
la source