Redémarrez complètement Bash

18

Existe-t-il un moyen de redémarrer complètement Bash et de recharger .bashrcet .profileainsi de suite? Je voudrais m'assurer que mes modifications ont bien fonctionné après avoir modifié ces fichiers.

Naftuli Kay
la source

Réponses:

32

Faites-le se remplacer par lui-même.

exec bash -l

Notez que cela n'affectera pas des choses telles que le cwd ou les variables exportées.

Ignacio Vazquez-Abrams
la source
Bien, mais j'aimerais surtout le faire afin de vérifier et de voir si mon PATHest réglé comme je veux ou mon PS1, etc.
Naftuli Kay
1
Retirez le execet vous obtenez un shell qui source les fichiers que vous souhaitez. Puis juste au exitmoment où vous avez terminé de vérifier.
Arcege
@TK: Toutes les variables que vous affectez auront priorité sur celles qui restent du shell précédent.
Ignacio Vazquez-Abrams
Donc, cela fonctionnera pour changer mon invite Bash? C'est-à-dire, il rechargera mon invite bash chaque fois que je l'exécuterai?
Naftuli Kay
Tant que vous définissez $PS1dans les fichiers de démarrage de bash, oui.
Ignacio Vazquez-Abrams
9

Je suggère instamment de me connecter sur une fenêtre / un écran séparé. De cette façon, vous avez toujours une session de travail en cas de problème avec vos modifications apportées aux fichiers de démarrage. De plus, vous êtes sûr d'avoir un environnement propre.

Raison: J'ai vu trop de gens se bloquer sur un système à cause d'une simple faute de frappe dans leur .profile (ou autre).

ktf
la source
+10, un shell propre où vous pouvez modifier les modifications est essentiel.
Sardathrion
Je suis dans un DE, donc ça ne devrait pas être si mal, Bauhaus oui, fais attention.
Naftuli Kay
3

Si votre objectif est simplement de relire les fichiers modifiés, vous n'avez pas besoin de le redémarrer. Vous pouvez simplement vous l'approvisionner.

source filename

ou

. filename # notice the dot

Notez que cela ne vous donnera pas un "état propre" dans un sens qu'il ne désactive pas les variables définies ou les fonctions définies ...

rahmu
la source
2
su -l yourOwnUserName

Ouvrira un nouveau shell pour l' yourOwnUserNameutilisateur avec tous les paramètres rechargés. Ceci est indépendant du shell, car il fait référence aux paramètres du système, pas à votre shell spécifique. Il charge également certains paramètres à l'échelle du système qui bash -lne le font pas (comme les groupes d'utilisateurs).

rozcietrzewiacz
la source
note importante: "une nouvelle coquille" signifie ici une coquille à l'intérieur de votre coquille existante, vous n'êtes donc que des coquilles imbriquées, pas en remplacement de celle d'origine. La réponse acceptée le fait correctement.
underscore_d