Fichier .bashrc

Bonjour

Je désire changer le fichier .bashrc suivant la methode suivante

« SUDO SU »

puis nano /etc/bash

le resultat est cense etre : " bash.bashrc bash_completion bash_completion.d / "
en revanche nano s’ouvre avec un fichier vide . qualqu un pourrait eclairer ma lanterne .

merci

Le bash.rc se trouve dans ta Home, idem pour celui de root.

vim ~/.bashrc

Bonsoir Clochette

merci d avoir pris la peine de me repondre ,tu reponds pas a mon interrogation. dans les exemples que j ai (les livres ) il ya des lignes dans le fichier .bashrc
Image 3

mais dans mon cas il ressemble a ca
11

Sans doute car j’ai zappé d’enlever le point entre bash et rc ^^ et que tu as recopié directement sans vérifier :wink:

1 J'aime

merci Clochette :innocent:

Bonjour Pat66

Juste quelque petits trucs :

Chaque compte utilisateur a son propre fichier ~/.bashrc

Le caractère ~ (qui s’affiche aussi dans le prompt)
est un raccourci qui est automatiquement remplacé (par l’interpréteur de commandes bash)
par le nom du répertoire personnel du compte utilisateur.

Comme tu as pu le constater,
quand tu as entré la commande nano ~/.bashrc
comme tu avais ouvert une fenêtre de terminal et donc un shell bash
depuis le compte utilisateur pat66
et comme le répertoire personnel du compte utilisateur pat66 est : /home/pat66
alors, le chemin absolu du fichier qui a été ouvert a été :

/home/pat66/.bashrc

Si tu avais été sous le compte root
la même ligne de commande aurait ouvert le fichier :

/root/.bashrc

Si tu avais été sous le compte emilia
la même ligne de commande aurait ouvert le fichier :

/home/emilia/.bashrc

Quand tu modifies un fichier de configuration,
il est prudent d’en faire une copie de sauvegarde avant modification
au cas où la modification que tu y ferais se passe mal,
et que tu veilles pouvoir, plus tard, remettre le fichier dans son état original.

l’éditeur nano a une option qui fait automatiquement cette sauvegarde,
c’est l’option backup (option sous sa forme longue)

Donc, en faisant :

nano  --backup  ~/.bashrc

un fichier de sauvegarde du fichier ~/.bashrc sera automatiquement créé,
dont le nom sera le même que le fichier original, mais avec un caractère ~ ajouté à la fin du nom.
Le fichier de sauvegarde créé automatiquement sera donc nommé :
~/.bashrc~

La lettre B est l’option courte équivalente à l’option longue backup
Donc, pour le même résultat,
tu peux entrer la ligne de commande suivante :

nano  -B  ~/.bashrc

Pratiquement toutes les commandes sous linux ont un manuel
et pour visualiser le manuel de la commande nano
il te suffit d’entrer la ligne de commande suivante :

man nano
4 J'aime

Bonsoir MicP

merci c 'est tres instructif ton message ,en effet ton message arrive a point nomme
je fais face a un message d erreur suite a une mauvaise manipulation du .bash rc

Au cas où tu n’aies pas pu retrouver et/ou corriger l’erreur qui est dans ton fichier ~/.bashrc
tu peux en créer un tout neuf en recopiant celui qui est installé au moment de la création d’un compte utilisateur.


Mais tu voudras peut-être d’abord sauvegarder ton fichier ~/.bashrc qui est défectueux pour voir plus tard ce qui n’allait pas en le comparant avec celui qui fonctionnera,

et pour ça, tu peux simplement renommer ton fichier ~/.bashrc qui est défectueux en,
par exemple : ~/.bashrcDefectueux
et juste après qu’il aura été renommé, recopier le fichier original qui est installé au moment de la création d’un compte utilisateur pour remplacer ton fichier ~/.bashrc

Tu peux faire ces deux choses l’une après l’autre
en ne lançant que l’unique ligne de commandes suivante :

mv  ~/.bashrc{,Defectueux}  &&  cp  /etc/skel/.bashrc  ~

Explications :

Le && permet de ne faire lancer la commande qui est à droite de ce &&
qu’à condition que la commande qui est à gauche de ce && se soit bien terminée sans erreur.

Donc, la commande suivante :

cp /etc/skel/.bashrc ~

ne sera lancée qu’a condition que la commande ci-dessous se soit bien terminée sans erreur :

mv ~/.bashrc{,Defectueux}

La commande mv ~/.bashrc{,Defectueux}

va renommer le fichier
~/.bashrc
en
~/.bashrcDefectueux

Donc, depuis ton compte pat66, lancer la commande
mv ~/.bashrc{,Defectueux}
c’est comme si on avait lancé la ligne de commande suivante :
mv /home/pat66/.bashrc /home/pat66/.bashrcDefectueux
mais là, c’est beaucoup plus long à écrire.


La commande cp /etc/skel/.bashrc ~

va copier le fichier /etc/skel/.bashrc dans ~

…et comme je te l’avais expliqué dans mon message précédent,
le caractère ~ sera automatiquement remplacé par le chemin absolu du répertoire personnel du compte utilisateur qui lancera la ligne de commande,

… donc si c’est le compte pat66 qui lance cette commande,
alors le caractère ~ sera remplacé par /home/pat66

Comme /home/pat66 est un répertoire existant,
la commande de copie va comprendre qu’il faut créer dans le répertoire /home/pat66
une copie du fichier .bashrc qui est dans le répertoire /etc/skel/

Donc, depuis ton compte pat66, lancer commande
cp /etc/skel/.bashrc ~
c’est comme si on avait lancé la ligne de commande suivante :
cp /etc/skel/.bashrc /home/pat66
mais là, c’est beaucoup plus long à écrire.

1 J'aime

Bonjour,

@MicP, tout ce que tu écris est vrai. Juste un petit modulo, à-propos de l’usage du symbole tilde ~ ; s’il est vrai qu’il remplace dans le contexte du shell par le home courant, il est préférable d’utiliser la variable $HOME.

  • Une raison évidente est la compréhension immédiate de la variable d’environnement $HOME .
  • deuxièmement, certaines commandes ne reconnaissent pas l’usage du tilde
  • troisième raison, utilise donc le tilde avec la fonction echo :wink:
  • le comportement de la variable d’expansion ~ dépend très fortement du shell utilisé, alors que la variable d’environnement $HOME est « universellement » reconnue et adoptée, tout shell confondu.

Alors, bien sûr, il est possible de redéfinir la variable d’environnement $HOME… avec tous les effets de bords attendus :smiley:
D’ailleurs, il semble exister un cas où la variable d’expansion tilde ne retournera jamais l’équivalent de la valeur de la variable d’environnement $HOME :

$ unset HOME

Et, oui, il y a des fous qui parfois la détruisent, ensuite l’usage de ~ retournera une valeur différente par analyse du fichier /etc/passwd - ou plutôt de la base de données liée - qui peut avoir une autre écriture.

Pour finir, les deux variables sont POSIX.

(j’ai lu certaines lectures qui recommandait plutôt son usage shell ; il faudrait que je retrouve ça)

Disons qu’étant donné qu’il s’agit dans ce fil de discussion
du fichier de configuration du shell bash, ou plus précisément de sa modification,
je reste dans le contexte du shell bash.

Bien sûr, il peut-être intéressant d’utiliser des lignes de commandes POSIX,
mais dans ce cas, le fichier ~/.bashrc serait tout simplement hors sujet.

Et puis un seul caractère tilde est bien plus court à écrire que $HOME


Pour l’utilisation du tilde avec la fonction echo
comme le tilde n’est pas une une variable d’environnement comme les autres,
(c’est une variable d'expansion) il ne faut pas le faire précéder du caractère $ :

michel@debbull:~$ echo ~
/home/michel
michel@debbull:~$ 

Mais le tilde permet de faire bien plus que ça,
il peut, avec un simple caractère supplémentaire,
être utilisé pour retourner la valeur des variables
OLDPWD ou PWD

Par exemple :

michel@debbull:/etc/skel$ cd ../apt
michel@debbull:/etc/apt$ echo ~-
/etc/skel
michel@debbull:/etc/apt$ echo ~+
/etc/apt
michel@debbull:/etc/apt$ 

Pour plus d’infos au sujet du tilde, voir le manuel du shell bash

Ou bien, pour aller directement à la bonne page du manuel,
entrez la ligne de commande suivante :

man --pager='less -p "Développement du tilde$"' bash

Non, dans un script shell, ça ne fonctionnera pas.

une variable d’expansion - ce n’est pas faute de l’avoir écrit plusieurs fois dans mon précédent message. Ce n’est pas une variable d’environnement.

:wink:

Oui, jusqu’à présent, je n’ai proposé dans ce fil de discussion
que des lignes de commandes à entrer dans le shell interactif bash d’une fenêtre de terminal,

…et c’est clair que s’il s’agissait de faire tout ça dans un script,
pour que le script soit plus facilement lisible,
il vaudrait mieux utiliser les options longues des commandes bash
et ne pas raccourcir ces lignes de commandes de façon à ce qu’elles soient plus facilement lisibles,

…et même mieux, en faire un script portable en utilisant des commandes et variables POSIX

Bonjour MicP

Je viens de lancer la sauvegarde du fichier .bashr via
Image 1

et ensuite j ai ca
Image 2
j avoue que je suis un perdu

Bonjour

Là, tu te retrouves dans la fenêtre de l’éditer nano
qui te permet de modifier le contenu du fichier /home/pat66/.bashrc
(comme on peut le voir dans la barre de titre de la fenêtre)


Et comme tu as utilisé l’option B pour lancer l’édition du fichier :

/home/pat66/.bashrc

un fichier nommé /home/pat66/.bashrc~ a été automatiquement créé,
ce qui fait que tu peux tranquillement faire tes modifications dans le fichier que tu as ouvert avec nano, puisque une copie du fichier que tu es en train de modifier a déjà été sauvegardé.

ok merci

Quand la fenêtre de l’éditeur nano est ouverte,
tu peux accéder à l’aide en ligne de nano en appuyant sur la touche F1

Quand nano affiche son aide en ligne si tu appuies à nouveau sur la touche F1
l’affichage de l’aide disparaîtra et tu retrouveras le texte que tu éditais comme tu l’avais laissé.

bonsoir

apres modification de mon .bashrc comme suit

oo
j ai lancer la commande
source ~ / .bashrc
mais en me reconnectant je contaste
aaq
qu il m est impossible de quitter le mode root la commande exit implique la fermeture du shell.

pourrais je avoir des explicationqs SVP.

Merci

Salut Pat66,
tu peux afficher ton bash.rc?

Prends l’habitude de privilégier le mode texte pour afficher du texte, au lieu d’une capture d’écran, c’est plus simple pour tout le monde (biz que personne ne t’es fait la remarque d’ailleurs, à moins que je sois passé à coté :slight_smile: ).

ps: Pas sûr de moi, mais, Il est possible que tu es lancé un terminal en mode root par un menu (ou raccourcis) quelconque, ne sachant pas ce qui se cache réellement derrière ce raccourcis, ça te bloque peut-être sur une console root.

1 J'aime

Bonjour

C’est une impression : Tu n’es pas sous le compte root et tu n’en as pas les privilèges,
c’est seulement le fait que, dans ta définition de la variable PS1
tu avais changé le caractère $ en caractère #


Actuellement, tu as un prompt
qui s’affiche comme ça :

[pat66@deb:~]#

c’est parce que tu avais défini la valeur de la variable PS1
avec la ligne de commande suivante :

PS1="$ROUGE[$BLANC\u$NC@$BLANC\h$NC:$BLANC\W$ROUGE]# $NC"

alors que si, dans la ligne de commande ci-dessus,
tu avais changé le caractère # par un caractère $
ça aurait donné la ligne de commande suivante :

PS1="$ROUGE[$BLANC\u$NC@$BLANC\h$NC:$BLANC\W$ROUGE]$ $NC"

et tu aurais eu un prompt
comme ci-dessous :

[pat66@deb:~]$ 

Je te propose d’utiliser plutôt dans ton fichier ~/.bashrc
les lignes de commande suivantes :

# Invite
nc='\033[0m'
rouge='\033[0;31m'
blanc='\033[1;37m'

PS1="$rouge[$blanc\u$nc@$blanc\h$nc:$blanc\W$rouge]$ $nc"

Tu noteras que chaque variable créée dans le script est nommée
en utilisant des lettres en minuscule,
parce que les lettres en majuscule sont utilisées pour nommer les variables du système,
comme ça, on arrive plus facilement à savoir de quel type de variable il s’agit.

1 J'aime

Bonjour MicP

merci