Re: Bash et fichiers de config

Top Page

Reply to this message
Author: nt.guilde
Date:  
CC: ML Guilde
Subject: Re: Bash et fichiers de config
>Autre question: qu'est-ce qu'exactement un login shell et un non-login shell ?
>Lorsqu'on lance une session xterm sous kde, par exemple, dans quel cas
>est-on ? et un su ou su -, ca donne quoi ?


login shell : 'ps' le liste comme ceci : '-bash'

ps -ef | egrep '[b]ash'

nt         900   898  0 Feb08 pts/0    00:00:00 bash
nt        2458  2456  0 Feb08 pts/4    00:00:00 bash
nt       28824 28822  0 Feb09 pts/6    00:00:00 bash
nt        6320  6318  0 Feb17 pts/3    00:00:00 bash
nt        7417  7415  0 Feb18 pts/7    00:00:00 bash
nt        7450  7448  0 Feb18 pts/8    00:00:00 bash
nt       26784 26782  0 Feb21 pts/2    00:00:01 bash
nt       18090 18088  0 23:08 pts/1    00:00:00 bash
nt       18122 18063  0 23:08 tty1     00:00:00 -bash


Il y a un seul login shell, sur la console 1 ; tous les autres sont non-login,
ouverts dans des xterm.
Tous les shells de la liste sont interactifs : ils attendent des commandes
de leur terminal et les exécutent. Les shells non-interactifs sont ceux
qui sont lancés pour exécuter un script ('bash script' ou 'bash -c string').
D'après le manuel et mes expérimentations :
- login shell (interactive or not) : /etc/profile, ~/.bash_profile ;
- non-login, interactive shell : ~/.bashrc ;
- non-login, non-interactive : if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
J'ai donc regroupé tout dans .bashrc, que j'invoque selon le cas :

.bash_profile :

# if interactive, execute .bashrc (aliases and functions)
[[ $- == *i* && -f ~/.bashrc ]] && . ~/.bashrc

.bashrc :

# interactive shells : user specific aliases and functions

[[ "$PATH" != *$HOME/bin* ]] && PATH=$PATH:$HOME/bin
export BASH_ENV=~/.bashrc # non-interactive shells

alias more='less -iR'

[[ $- == *i* ]] && {
test -f /etc/bashrc && . /etc/bashrc # global definitions

HISTSIZE=1000
HISTFILE=~/.bash_history
HISTCONTROL=ignoreboth # ignorespace && ignoredups
shopt -s histappend # appending, not overwriting, to history file
shopt -s cmdhist lithist # save multiple lines commands in one entry
...
alias whence='type -path'
alias spell='ispell -l'
alias news='NNTPSERVER=news.free.fr tin -raf ~/.tin/newsrc'
}

-Nicolas Tripon