90 votes

Comment restaurer .bashrc à sa valeur par défaut?

J'ai essayé d'installer les outils de développement Android sur Eclipse, et j'ai suivi les informations dans cette vidéo.

Comme la vidéo l'a dit, j'ai ajouté les deux lignes de code suivantes dans le fichier .bashrc:

export PATH=$(PATH):-/android-sdk/tools/
export PATH=$(PATH):-/android-sdk/platform-tools/

Cependant, il semble que cela ne m'ait pas aidé à installer les fichiers Android sur Eclipse, car j'ai toujours des problèmes avec cela. De plus, il semble que je ne puisse plus exécuter de commandes dans le terminal sans obtenir une erreur majeure maintenant! Chaque fois que j'essaie d'exécuter une commande dans le terminal, je reçois le message suivant:

La commande n'a pas pu être localisée car '/usr/bin' n'est pas inclus dans la variable d'environnement PATH.

Y a-t-il un moyen de restaurer .bashrc à sa valeur par défaut?

157voto

sourav c. Points 40637

Idée: Il existe des copies de sauvegarde de .bashrc, .profile, etc. dans /etc/skel/. Ainsi, on pourrait remplacer un .bashrc corrompu simplement en écrasant à partir de là.

Attention: si vous remplacez le fichier .bashrc par un nouveau, cela supprimera toute autre modification que vous y avez apportée. Par exemple, on pourrait ajouter des alias, des fonctions personnalisées ou des PATH dans .bashrc. Lorsque vous remplacez le fichier, toutes ces modifications seront perdues. Il vaut mieux conserver une copie de votre .bashrc modifié avant de le remplacer. Ensuite, vous pourrez extraire avec soin la partie requise. Pour conserver une copie de sauvegarde de votre .bashrc modifié dans votre répertoire personnel avec le nom my_bashrc, utilisez la commande suivante dans un terminal :

/bin/cp ~/.bashrc ~/my_bashrc

Pourquoi /bin/cp: Dans le cas où vous auriez modifié votre variable $PATH en changeant ~/.bashrc, tous les exécutables seront indisponibles à partir de votre terminal et cp ne fonctionnera plus. Il est donc recommandé d'appeler cp avec son chemin complet en tant que /bin/cp lorsque vous essayez de copier quelque chose avec un ~/.bashrc corrompu.

Enfin, utilisez la commande suivante dans votre terminal pour remplacer le ~/.bashrc par une copie fraîche :

/bin/cp /etc/skel/.bashrc ~/

Cela remplacera votre ~/.bashrc corrompu par un nouveau. Ensuite, vous devrez sourcer le ~/.bashrc afin que le changement prenne effet immédiatement, écrivez dans le terminal :

. ~/.bashrc

ou,

source ~/.bashrc

ou, si cela ne fonctionne pas, vous pouvez fermer le terminal et le rouvrir.

11voto

muru Points 180007

Si vous ne pouvez pas obtenir un shell fonctionnel

Par le navigateur de fichiers

  • Ouvrez le navigateur de fichiers, allez dans le répertoire personnel, appuyez sur CtrlH pour afficher les fichiers cachés. Modifiez .bashrc selon vos besoins.
  • Ouvrez le navigateur de fichiers, allez dans /etc/skel, appuyez sur CtrlH pour afficher les fichiers cachés. Copiez .bashrc dans votre dossier personnel pour le restaurer à sa valeur par défaut.

Par le menu d'exécution

  • Appuyez sur AltF2, tapez gedit .bashrc, appuyez sur Entrée. Modifiez selon vos besoins.
  • Appuyez sur AltF2, utilisez la commande /bin/cp /etc/skel/.bashrc ~/ comme indiqué dans la réponse de souravc pour le restaurer à sa valeur par défaut.

Par le terminal

  • Ouvrez le terminal et ignorez que vous n'avez pas de shell. Allez dans Modifier Préférences Profils:

    description de l'image

  • Créez un nouveau profil ou modifiez le profil actuel pour changer la commande:

    description de l'image

    Utilisez soit /bin/bash --norc soit /bin/bash --rcfile=/etc/skel/.bashrc.

  • Ouvrez un nouvel onglet (avec le profil personnalisé, si vous en avez créé un). Utilisez le shell fonctionnel selon vos besoins.

  • Supprimez le profil personnalisé ou décochez l'option de commande personnalisée si vous avez modifié le profil par défaut, une fois que vous avez terminé.

Si vous avez SSH

Exécutez SSH avec une commande personnalisée, ce qui devrait vous aider à contourner le .bashrc:

ssh -t  dash

Le shell dash (alias /bin/sh) est minimal, mais suffisant pour restaurer le .bashrc.

Si vous ne pouvez pas obtenir une interface graphique et n'avez pas SSH

Démarrer en mode de récupération (Comment démarrer en mode de récupération ?), qui vous donnera un shell root. Cherchez dans /home le répertoire personnel de votre utilisateur.

5voto

Videonauth Points 31896

Par le biais du TTY

Vous pouvez accéder au TTY en appuyant sur ctrl+alt+f1 où vous devez vous connecter avec votre nom d'utilisateur et votre mot de passe. ctrl+alt+f7 vous ramènera à votre interface graphique ultérieurement.

Maintenant copiez le .bashrc brut existant depuis /etc/skel dans votre répertoire personnel en

cp /etc/skel/.bashrc ~/

Peut-être même apportez le reste si vous n'êtes pas sûr que votre .profile ait été modifié également.

cp /etc/skel/.profile ~/

Maintenant, pour que le .bashrc ait un effet immédiat, vous voudrez peut-être lancer la commande :

source ~/.bashrc

Si vous avez également remplacé votre .profile, vous devrez redémarrer pour que les modifications prennent effet.

4voto

MattKelly Points 299

J'ai essayé les réponses ci-dessus, mais pour une raison quelconque mon répertoire /etc/skel/ n'avait pas les bons fichiers.

J'ai trouvé une copie du fichier ~/.bashrc par défaut sur ce GitHub Gist de Mario Bonales. Le script complet est copié ici pour plus de clarté.

# ~/.bashrc: exécuté par bash(1) pour les shells non connectés.
# voir /usr/share/doc/bash/examples/startup-files (dans le package bash-doc)
# pour des exemples

# Si vous n'êtes pas en mode interactif, ne rien faire
[ -z "$PS1" ] && return

# ne pas mettre de lignes dupliquées dans l'historique. Voir bash(1) pour plus d'options
# ... ou forcer ignoredups et ignorespace
HISTCONTROL=ignoredups:ignorespace

# ajouter à l'historique, ne pas l'écraser
shopt -s histappend

# pour définir la longueur de l'historique, voir HISTSIZE et HISTFILESIZE dans bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# vérifier la taille de la fenêtre après chaque commande et, si nécessaire,
# mettre à jour les valeurs de LINES et COLUMNS.
shopt -s checkwinsize

# rendre less plus convivial pour les fichiers d'entrée non textuels, voir lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# définir une variable identifiant le chroot dans lequel vous travaillez (utilisé dans l'invite ci-dessous)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# définir une invite élégante (non-colorée, sauf si nous "voulons" de la couleur)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# décommentez pour une invite colorée, si le terminal a la capacité; désactivé par défaut pour ne pas distraire l'utilisateur: le focus dans une fenêtre de terminal
# doit être sur la sortie des commandes, pas sur l'invite
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # Nous avons un support de couleur; supposons qu'il est conforme à Ecma-48
    # (ISO/IEC-6429). (Le manque de support est extrêmement rare, et un tel
    # cas tendrait à supporter setf plutôt que setaf.)
    couleur_prompt=yes
    else
    couleur_prompt=
    fi
fi

si [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
sinon
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# Si c'est un xterm définir le titre sur user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# activer le support de couleur de ls et ajouter également des alias pratiques
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# quelques autres alias de ls
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Ajouter un alias "alerte" pour les commandes longues en cours d'exécution. Utilisez comme ceci:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Définition des alias.
# Vous voudrez peut-être mettre toutes vos ajouts dans un fichier séparé comme
# ~/.bash_aliases, au lieu de les ajouter directement ici.
# Voir /usr/share/doc/bash-doc/examples dans le package bash-doc.

si [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# activer les fonctionnalités de complétion programmable (vous n'avez pas besoin d'activer
# cela, si c'est déjà activé dans /etc/bash.bashrc et /etc/profile
# source /etc/bash.bashrc).
si [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X