[bash] bashrc/bash_profile

Applications, problèmes de configuration réseau
Karxo
newbie
Messages : 3
Inscription : mar. 27 août 2019, 01:00

[bash] bashrc/bash_profile

Message par Karxo »

Bonjour,
Je configure mon .bashrc et mon .bash_profile,
Dans mon bashrc j'ai mis les alias et les fonctions pour bash, et dans le bash_profile j'ai ajouté les variables LS, PATH, les couleurs pour les man, je voulais savoir si c'était mieux de faire ainsi, ou de tout mettre dans le bashrc ?
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [bash] bashrc/bash_profile

Message par waitnsea »

Karxo a écrit : mar. 27 août 2019, 01:01 Je configure mon .bashrc et mon .bash_profile,
Dans mon bashrc j'ai mis les alias et les fonctions pour bash, et dans le bash_profile j'ai ajouté les variables LS, PATH, les couleurs pour les man, je voulais savoir si c'était mieux de faire ainsi, ou de tout mettre dans le bashrc ?
Il y a pas mal de documentation, exemple: tape file:///usr/share/doc/bash/bashref.html dans ton navigateur...
J'ai, comme indiqué dans ce texte, un .bash_profile qui renvoie à .bashrc :

Code : Tout sélectionner

#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc
et les variables d'environnement sont toutes dans le .bashrc.

Mais j'ai bien séparé les alias dans un fichier .bash_aliases et les fonctions dans .bash_functions et passé les instructions suivantes dans .bashrc pour les inclure :

Code : Tout sélectionner

#renvoi au fichier d'alias
[ -f ~/.bash_aliases ] && source ~/.bash_aliases

#renvoi au fichier des fonctions
[ -f ~/.bash_functions ] && source ~/.bash_functions
Ce sont des fichiers que tu éditeras souvent alors que tu ne toucheras plus à ton .bashrc

Il y a aussi .profile, le mien :

Code : Tout sélectionner

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# if running zsh
if [ -n "$ZSH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.zshrc" ]; then
	. "$HOME/.zshrc"
    fi
fi


# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
Comme ça, si (quand) tu passes à zsh c'est bien propre et il n'y a plus qu'à faire des liens entre .zsh_aliases et .bash_aliases par exemple
laurent85
Elfe
Messages : 951
Inscription : mar. 16 oct. 2018, 21:05

Re: [bash] bashrc/bash_profile

Message par laurent85 »

Bonjour,
Karxo a écrit : mar. 27 août 2019, 01:01 Dans mon bashrc j'ai mis les alias et les fonctions pour bash, et dans le bash_profile j'ai ajouté les variables LS, PATH, les couleurs pour les man, je voulais savoir si c'était mieux de faire ainsi, ou de tout mettre dans le bashrc ?
Les configurations perso je les ajouterais toutes dans bashrc de cette façon tu es sûr qu'elles seront actives aussi bien pour les login shell que les non-login shell vu que par défaut sur Arch le .bash_profile exécute aussi le .bashrc.
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [bash] bashrc/bash_profile

Message par avi3000 »

Bonjour,

Les profiles sont sourcés ou exécutés à l'ouverture de session.
Ils contiennent tout ce qui a un sens pour une session (variables d'environnement, actions à exécuter au démarrage d'une session, ... ).

les shells rc sont exécutés au lancement d'un script.
Ils contiennent tout ce qui a un sens pour l'exécution d'un script (alias, fonctions, ...).

Comme lxdm, certains ( tous ?) gestionnaires de connexion n'utilisent pas le fichier ~/.bash_profile.
Il est donc préférable d'utiliser le fichier ~/.profile.
Pour couvrir tous les cas de figure et notamment l'ouverture de session depuis un tty, on ajoute la ligne ci-dessous au shell_profile adéquat.

Code : Tout sélectionner

[[ -f ~/.profile ]] && . ~/.profile
En procédant de cette façon les variables d'environnement sont définis à un seul endroit pour toute la session, indépendamment du shell utilisé.

Sourcé des shells rc dans ~/.profile, comme le fait waintsea, doit être évité.
Karxo
newbie
Messages : 3
Inscription : mar. 27 août 2019, 01:00

Re: [bash] bashrc/bash_profile

Message par Karxo »

Merci pour votre aide, du coup .bash_profile n'est lu que depuis la connexion d'un tty c'est ça ?
Le contenu de mon .bash_profile j'ai jute à le transférer dans .profile et de sourcer .profile avec .bash_profile

Donc en ce qui concerne les alias, fonctions... PS1 etc, j'ai tout mis dans mon bashrc
Par contre tout ce qui est par exemple :
export EDITOR=vim, ou le path, les couleurs des ls, vous l'auriez plutôt mis dans le bashrc ou dans le profile ?
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [bash] bashrc/bash_profile

Message par avi3000 »

Karxo a écrit : mar. 27 août 2019, 17:35 Merci pour votre aide, du coup .bash_profile n'est lu que depuis la connexion d'un tty c'est ça ?
ce n'est pas ce que j'ai écrit. Notamment signifie entre autre. Je ne connais pas tous les gestionnaires de connexion.

notes issues de ma documentation personelle

Code : Tout sélectionner

LXDM, GDM, XDM, LIGHTDM :
     exécute/source /etc/r[lx,g,x,light]dm/Xsession et n'utilise pas /bin/bash -login
     voir /etc/r[lx,g,x,light]dm/Xsession pour connaitre les fichiers sourcés.
     kdm(kde4)  fait probablement la même chose

SLIM :
     n'a pas de dossier /etc/slim, tout est dans le fichier slim.conf
     il est recommandé d'utiliser exec /bin/bash -login /etc/X11/Xsession %session comme login_cmd.
     Lit et exécute tout d'abord /etc/profile s'il existe. Après lecture de ce fichier,
     recherche ~/.bash_profile, ~/.bash_login, et ~/.profile, dans cet ordre,
     puis exécute les commandes se trouvant dans le premier fichier existant et accessible en lecture.
     Si ~/.bash_profile existe, y sourcer ~/.profile.

Conclusion :
     avoir uniquement un .profile dans son $HOME devrait fonctionner avec tous les display manager.
     pour xdm qui exécute .xinitrc, on y sourcera .profile.

export EDITOR peut être utilisée ailleurs que dans bash, donc profile, idem pour le path.
pour ls j'utilise l'alias ls='ls -Aplth --color=auto --group-directories-first', donc bashrc.
Karxo
newbie
Messages : 3
Inscription : mar. 27 août 2019, 01:00

Re: [bash] bashrc/bash_profile

Message par Karxo »

avi3000 a écrit : mar. 27 août 2019, 19:10
Karxo a écrit : mar. 27 août 2019, 17:35 [...]
En fait je n'utilise pas de gestionnaire de connexion, si j'aurais utilisé lightdm si je suis tes recommendations j'aurais mis tout ce que je dois mettre dans .bash_profile, dans .profile, vu qu'ils sourcent profile, c'est ça ?
Dans mon cas, j'utinise xinitrc, c'est pour ça que je me demandais si il fallait les mettre dans le .bash_profile, il me semblait qu'il vérifiait .bash_profile

Pour t'aiguiller, voilà le contenu de mes fichiers :
.bashrc
.bash_profile
.xinitrc

Tu aurais mis le contenu d'un fichier plutôt dans un autre ?
Répondre