Restauration de ~ / .bashrc sans utiliser les commandes bash

Aug 21 2020

Je pense que j'ai eu une faute de frappe lorsque j'ajoute un chemin ~/.bashrcet après l'avoir généré, je ne peux plus utiliser les commandes bash.

Maintenant, je veux restaurer un normal ~/.bashrc, mais la plupart des discussions que j'ai trouvées (par exemple, comment réparer un .bashrc qui a été mal édité? ) Doivent utiliser des commandes bash, par exemplecp

clam@cuerei:~# cp /etc/skel/.bashrc ~
cp: /home/cltam/script/lib/libc.so.6: version `GLIBC_2.17' not found (required by cp)

Puis-je savoir comment puis-je restaurer ~/.bashrcsans utiliser les commandes bash?

Je vous remercie.

Réponses

25 user1686 Aug 21 2020 at 16:35

cpn'est pas une commande bash - c'est un programme externe. C'est pourquoi il échoue; Les commandes de bash réelles ne seraient pas affectées par les changements de bibliothèque ou de chemin. Vous voulez donc le contraire, c'est-à-dire n'utiliser que des commandes bash.

Vous pouvez supprimer complètement le contenu du fichier en utilisant:

true > ~/.bashrc

Ou écraser avec d'autres contenus:

echo "" > ~/.bashrc

Ou vous pouvez essayer d'annuler temporairement les mauvaises modifications dans le live shell:

unset LD_LIBRARY_PATH LD_PRELOAD LD_AUDIT
export PATH=/bin:/usr/bin
cp /etc/skel/.bashrc ~

Ou vous pouvez copier le contenu du fichier, ligne par ligne, en utilisant uniquement les fonctions intégrées du shell:

while IFS="" read -r line; do
    echo "$line";
done < /etc/skel/.bashrc > ~/.bashrc
1 NuclearFission Aug 22 2020 at 05:35

Êtes-vous actuellement connecté au système? Si tel est le cas, vous pouvez passer à un autre shell, puis éditer le fichier

> chsh
> vi ~/.bashrc
1 ThorbjørnRavnAndersen Aug 22 2020 at 18:14

Vous avez rompu le chemin de votre bibliothèque qui est utilisé pour les programmes liés dynamiquement. Ceux-ci ne contiennent pas tout le code nécessaire pour exécuter le programme, mais en chargent à partir de bibliothèques partagées au démarrage.

Certains programmes sont compilés pour éviter ce problème (par exemple pour les programmes exécutés en tant que root ou nécessaires très tôt dans le processus de démarrage). Ils sont traditionnellement placés dans /sbinet /usr/sbin. Ce qu'il y a exactement dépend de ce qui est installé.

Sur mon Mac, il ne semble pas qu'un éditeur soit disponible, mais votre système pourrait l'être.

JohnnyTam Aug 24 2020 at 09:09

J'ai suivi la suggestion de @Peter Cordes d'annuler ma modification en: unset LD_LIBRARY_PATH.

Merci beaucoup!