.bashrc écrasé mais toujours sourcé - comment le récupérer?


19

Habituellement, lorsque je trouve une commande que je veux alias, je la fais écho à mon .bashrc comme ceci:

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

Il peut y avoir une meilleure façon de procéder. Mais de toute façon, je viens d'écraser tout le fichier .rc en utilisant un seul chevron. Cependant, puisque le .bashrc est toujours à jour, il accepte toujours mes anciens alias (pour l'instant bien sûr). Existe-t-il un moyen de le récupérer?


6
echo "set -o noclobber" > ~/.bashrc(n'oubliez pas d'ajouter un deuxième support d'angle)
hhaamu


1
Pour l'avenir: sauvegardez vos fichiers afin que ce ne soit pas un problème. Vous pouvez également envisager de créer un fichier séparé pour ces modules complémentaires rapides et de le trouver quelque part comme dans .bashrc. Fournit un filet de sécurité de base et vous pouvez facilement l'activer et le désactiver si nécessaire.
Joe

2
Vous pouvez enregistrer vos paramètres actuels, mais si vous .bashrcaviez une logique qui dépendait de variables locales telles que l'hôte, l'utilisateur, etc., cela est probablement irrécupérable. La vraie réponse est de restaurer à partir de votre sauvegarde la plus récente. Vous avez un droit de sauvegarde récent?
jw013

Réponses:


22
  • alias sans paramètre génère les définitions des alias actuellement définis.
  • declare -f affiche les définitions des fonctions actuellement définies.
  • export -p renvoie les définitions des variables actuellement définies.

Toutes ces définitions de sortie de commandes prêtes à être réutilisées, vous pouvez rediriger leurs sorties directement vers une nouvelle ~/.bashrc.

Toutes les listes contiendront beaucoup d'éléments définis ailleurs, par exemple /etc/profileet /etc/bash_completion. Vous devrez donc nettoyer la liste manuellement.


3
Je suggère également de partir de la valeur .bashrcpar défaut de votre système. Dans Debian, c'est dans /etc/skel, ou vous pouvez créer un nouvel utilisateur, si vous le pouvez, pour en obtenir un tout nouveau .bashrc.
enzotib

1
setet declare(sans arguments) afficher tout cela à la fois.
rozcietrzewiacz

@enzotib, bonne idée. je me suis demandé où résiderait le .bashrc par défaut ...
ixtmixilix

1

typeset -f > .bashrc devrait le faire, à condition que tout ce que vous aviez soit des alias.


La functionscommande n'existe pas pour moi 4.2.10(2)-release. Vous voulez probablement dire declare -f.
Chris Down

En fait, je voulais dire "typeset -f"
Paul Tomblin
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.