Page 1 sur 1
[bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 01:01
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 ?
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 03:09
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
:
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
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 12:48
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.
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 16:26
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.
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é.
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 17:35
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 ?
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 19:10
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.
Re: [bash] bashrc/bash_profile
Publié : mar. 27 août 2019, 20:44
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 ?