2) Mais quand je me connecte au système via l'interface graphique
(gnome), alors là j'ai pu constater que BASH_VERSION version était vide
et donc que l'inclusion du ~/.bahrc ne se faisait pas.
Je ne comprends pas trop le cas 2), alors que mon shell par défaut est
bien le bash comme en témoigne ceci :
#--------------
$ cat /etc/passwd | grep francois
francois:x:1000:1000:francois,,,:/home/francois:/bin/bash
#--------------
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
2) Mais quand je me connecte au système via l'interface graphique
(gnome), alors là j'ai pu constater que BASH_VERSION version était vide
et donc que l'inclusion du ~/.bahrc ne se faisait pas.
Je ne comprends pas trop le cas 2), alors que mon shell par défaut est
bien le bash comme en témoigne ceci :
#--------------
$ cat /etc/passwd | grep francois
francois:x:1000:1000:francois,,,:/home/francois:/bin/bash
#--------------
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
2) Mais quand je me connecte au système via l'interface graphique
(gnome), alors là j'ai pu constater que BASH_VERSION version était vide
et donc que l'inclusion du ~/.bahrc ne se faisait pas.
Je ne comprends pas trop le cas 2), alors que mon shell par défaut est
bien le bash comme en témoigne ceci :
#--------------
$ cat /etc/passwd | grep francois
francois:x:1000:1000:francois,,,:/home/francois:/bin/bash
#--------------
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
Je ne sais pas quel émulateur de terminal tu utilises quand tu es dans
une session Gnome et je n'utilise pas Gnome mais j'ai déjà eu un cas
similaire (il me semble que c'était avec Enlightenment).
Pour obtenir le comportement que tu souhaites, il suffisait de
selectionner une option de l'émulateur dont le nom devait ressembler à
"Utiliser un shell de connexion" sans quoi le terminal s'ouvrait mais
ne prenait pas en compte ni les colorations que j'avais définies, ni les
alias de commandes etc...
Je ne sais pas quel émulateur de terminal tu utilises quand tu es dans
une session Gnome et je n'utilise pas Gnome mais j'ai déjà eu un cas
similaire (il me semble que c'était avec Enlightenment).
Pour obtenir le comportement que tu souhaites, il suffisait de
selectionner une option de l'émulateur dont le nom devait ressembler à
"Utiliser un shell de connexion" sans quoi le terminal s'ouvrait mais
ne prenait pas en compte ni les colorations que j'avais définies, ni les
alias de commandes etc...
Je ne sais pas quel émulateur de terminal tu utilises quand tu es dans
une session Gnome et je n'utilise pas Gnome mais j'ai déjà eu un cas
similaire (il me semble que c'était avec Enlightenment).
Pour obtenir le comportement que tu souhaites, il suffisait de
selectionner une option de l'émulateur dont le nom devait ressembler à
"Utiliser un shell de connexion" sans quoi le terminal s'ouvrait mais
ne prenait pas en compte ni les colorations que j'avais définies, ni les
alias de commandes etc...
Dans le fichier /home/francois/.profile j'ai ça :
#--------------
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
#--------------
Supposons que dans ce même fichier, j'y rajoute à la fin la ligne suivante :
echo $BASH_VERSION >> /home/francois/Bureau/out.txt
Ceci étant déjà fait, j'allume mon PC ce qui démarre Ubuntu (10.04). Une
fois le démarrage terminé, je me retrouve devant une interface graphique
qui me propose d'ouvrir une session avec tel ou tel compte (je crois que
le programme qui lance cette interface s'appelle gdm). Je peux alors
ouvrir une session de deux façons :
1) Soit en ouvrant une session via l'interface graphique de manière très
classique (je clique sur le compte "francois" et je tape le mot de
passe) et là visiblement le fichier .bashrc n'est pas lu et c'est ce qui
me pose problème. En effet, lors de l'ouverture de session, j'ai bien le
fichier out.txt qui est créé sur mon Bureau mais il contient une ligne
vide. Donc la variable BASH_VERSION est vide (j'ignore pourquoi) et le
.bashrc n'est donc pas lu par mon shell de connexion (c'est là mon
problème).
2) Soit en faisant un CTRL-ALT-F1 et en ouvrant une session en ligne de
commande sur le terminal tty1 et là le fichier out.txt est bien créé
(s'il n'existe pas encore) ou bien une ligne y est ajoutée et cette
ligne est "4.1.5(1)-release". Là, BASH_VERSION est donc non vide et le
.bashrc est bien «chargé».
Le cas 1) me pose problème. Je ne comprends pas, alors que mon shell par
défaut est le bash, que dans le cas 1) je puisse avoir BASH_VERSION vide
(et donc que le .bashrc ne soit pas «chargé»)
Dans le fichier /home/francois/.profile j'ai ça :
#--------------
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
#--------------
Supposons que dans ce même fichier, j'y rajoute à la fin la ligne suivante :
echo $BASH_VERSION >> /home/francois/Bureau/out.txt
Ceci étant déjà fait, j'allume mon PC ce qui démarre Ubuntu (10.04). Une
fois le démarrage terminé, je me retrouve devant une interface graphique
qui me propose d'ouvrir une session avec tel ou tel compte (je crois que
le programme qui lance cette interface s'appelle gdm). Je peux alors
ouvrir une session de deux façons :
1) Soit en ouvrant une session via l'interface graphique de manière très
classique (je clique sur le compte "francois" et je tape le mot de
passe) et là visiblement le fichier .bashrc n'est pas lu et c'est ce qui
me pose problème. En effet, lors de l'ouverture de session, j'ai bien le
fichier out.txt qui est créé sur mon Bureau mais il contient une ligne
vide. Donc la variable BASH_VERSION est vide (j'ignore pourquoi) et le
.bashrc n'est donc pas lu par mon shell de connexion (c'est là mon
problème).
2) Soit en faisant un CTRL-ALT-F1 et en ouvrant une session en ligne de
commande sur le terminal tty1 et là le fichier out.txt est bien créé
(s'il n'existe pas encore) ou bien une ligne y est ajoutée et cette
ligne est "4.1.5(1)-release". Là, BASH_VERSION est donc non vide et le
.bashrc est bien «chargé».
Le cas 1) me pose problème. Je ne comprends pas, alors que mon shell par
défaut est le bash, que dans le cas 1) je puisse avoir BASH_VERSION vide
(et donc que le .bashrc ne soit pas «chargé»)
Dans le fichier /home/francois/.profile j'ai ça :
#--------------
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
#--------------
Supposons que dans ce même fichier, j'y rajoute à la fin la ligne suivante :
echo $BASH_VERSION >> /home/francois/Bureau/out.txt
Ceci étant déjà fait, j'allume mon PC ce qui démarre Ubuntu (10.04). Une
fois le démarrage terminé, je me retrouve devant une interface graphique
qui me propose d'ouvrir une session avec tel ou tel compte (je crois que
le programme qui lance cette interface s'appelle gdm). Je peux alors
ouvrir une session de deux façons :
1) Soit en ouvrant une session via l'interface graphique de manière très
classique (je clique sur le compte "francois" et je tape le mot de
passe) et là visiblement le fichier .bashrc n'est pas lu et c'est ce qui
me pose problème. En effet, lors de l'ouverture de session, j'ai bien le
fichier out.txt qui est créé sur mon Bureau mais il contient une ligne
vide. Donc la variable BASH_VERSION est vide (j'ignore pourquoi) et le
.bashrc n'est donc pas lu par mon shell de connexion (c'est là mon
problème).
2) Soit en faisant un CTRL-ALT-F1 et en ouvrant une session en ligne de
commande sur le terminal tty1 et là le fichier out.txt est bien créé
(s'il n'existe pas encore) ou bien une ligne y est ajoutée et cette
ligne est "4.1.5(1)-release". Là, BASH_VERSION est donc non vide et le
.bashrc est bien «chargé».
Le cas 1) me pose problème. Je ne comprends pas, alors que mon shell par
défaut est le bash, que dans le cas 1) je puisse avoir BASH_VERSION vide
(et donc que le .bashrc ne soit pas «chargé»)
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
Avez-vous une explication ? Cela me gêne un peu car j'ai des modifs dans
~/.bashrc que j'aimerais bien laisser dans ce fichier et qui du coup ne
prennent pas effet dès que je me connecte via gnome.
zsh est infiniment plus logique :
- .zshenv et /etc/zsh/zshenv sont sourcés systématiquement, et servent
normalement pour l'initialisation de l'environnement (PATH, umask, etc.) ;
- .zprofile et /etc/zsh/zprofile sont sourcés pour tous les shells de
login ;
- .zshrc et /etc/zsh/zshrc sont sourcés pour tous les shells interactifs, et
servent normalement pour la définition d'options d'interface (raccourcis
claviers, options de complétion, alias, etc.).
zsh est infiniment plus logique :
- .zshenv et /etc/zsh/zshenv sont sourcés systématiquement, et servent
normalement pour l'initialisation de l'environnement (PATH, umask, etc.) ;
- .zprofile et /etc/zsh/zprofile sont sourcés pour tous les shells de
login ;
- .zshrc et /etc/zsh/zshrc sont sourcés pour tous les shells interactifs, et
servent normalement pour la définition d'options d'interface (raccourcis
claviers, options de complétion, alias, etc.).
zsh est infiniment plus logique :
- .zshenv et /etc/zsh/zshenv sont sourcés systématiquement, et servent
normalement pour l'initialisation de l'environnement (PATH, umask, etc.) ;
- .zprofile et /etc/zsh/zprofile sont sourcés pour tous les shells de
login ;
- .zshrc et /etc/zsh/zshrc sont sourcés pour tous les shells interactifs, et
servent normalement pour la définition d'options d'interface (raccourcis
claviers, options de complétion, alias, etc.).
Au passage, y a-t-il une commande qui peut me donner le shell courant ?
Au départ, je pensais que "echo $0" marchait, mais en fait cela
fonctionne uniquement dans un shell interactif. Par exemple, si je suis
sous le shell bash et que j'ai le script exécutable toto qui contient ceci :
#---------
#! /bin/sh
echo $0
#---------
Alors dans le bash, j'ai ça :
#----------------------
$ echo $0 # je suis bien dans le bash
bash
$ ./toto
./toto
$ sh toto
toto
#----------------------
Existe-t-il une commande qui m'indiquera que, lors de l'appel du script
toto, c'est bien le shell 'sh' qui est utilisé ?
Au passage, y a-t-il une commande qui peut me donner le shell courant ?
Au départ, je pensais que "echo $0" marchait, mais en fait cela
fonctionne uniquement dans un shell interactif. Par exemple, si je suis
sous le shell bash et que j'ai le script exécutable toto qui contient ceci :
#---------
#! /bin/sh
echo $0
#---------
Alors dans le bash, j'ai ça :
#----------------------
$ echo $0 # je suis bien dans le bash
bash
$ ./toto
./toto
$ sh toto
toto
#----------------------
Existe-t-il une commande qui m'indiquera que, lors de l'appel du script
toto, c'est bien le shell 'sh' qui est utilisé ?
Au passage, y a-t-il une commande qui peut me donner le shell courant ?
Au départ, je pensais que "echo $0" marchait, mais en fait cela
fonctionne uniquement dans un shell interactif. Par exemple, si je suis
sous le shell bash et que j'ai le script exécutable toto qui contient ceci :
#---------
#! /bin/sh
echo $0
#---------
Alors dans le bash, j'ai ça :
#----------------------
$ echo $0 # je suis bien dans le bash
bash
$ ./toto
./toto
$ sh toto
toto
#----------------------
Existe-t-il une commande qui m'indiquera que, lors de l'appel du script
toto, c'est bien le shell 'sh' qui est utilisé ?
Et oui, bien vu. si j'ai bien tout compris c'est le shell 'sh' qui est
utilisé et donc la non inclusion du .bashrc s'explique alors. Du coup,
pour que mes modifs dans .bashrc soient lues directement après
l'ouverture d'une session graphique, il faut que je me débrouille pour
que ce soit le bash par gdm qui soit utilisé et non le sh. Mais là, je
crois que je vais m'abstenir de tripatouiller ces choses au risque de
tout casser.
Et oui, bien vu. si j'ai bien tout compris c'est le shell 'sh' qui est
utilisé et donc la non inclusion du .bashrc s'explique alors. Du coup,
pour que mes modifs dans .bashrc soient lues directement après
l'ouverture d'une session graphique, il faut que je me débrouille pour
que ce soit le bash par gdm qui soit utilisé et non le sh. Mais là, je
crois que je vais m'abstenir de tripatouiller ces choses au risque de
tout casser.
Et oui, bien vu. si j'ai bien tout compris c'est le shell 'sh' qui est
utilisé et donc la non inclusion du .bashrc s'explique alors. Du coup,
pour que mes modifs dans .bashrc soient lues directement après
l'ouverture d'une session graphique, il faut que je me débrouille pour
que ce soit le bash par gdm qui soit utilisé et non le sh. Mais là, je
crois que je vais m'abstenir de tripatouiller ces choses au risque de
tout casser.
Ok, mais finalement c'est quoi exactement un "shell de login" ?
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
Par exemple, quand j'ouvre une session graphiquement
Ok, mais finalement c'est quoi exactement un "shell de login" ?
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
Par exemple, quand j'ouvre une session graphiquement
Ok, mais finalement c'est quoi exactement un "shell de login" ?
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
Par exemple, quand j'ouvre une session graphiquement
Ok, mais finalement c'est quoi exactement un "shell de login" ?
C'est un shell lancé pour l'établissement d'une session texte sur la
machine, que ce soit en local (mgetty+login) ou par connexion à distance
(ssh).
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
J'employais le terme shell de login pour désigner le processus. Le même
terme peut être employé pour désigner l'option de /etc/passwd. La
correspondance est que c'est le shell désigné par /etc/passwd qui est lancé
comme shell de login.
Par exemple, quand j'ouvre une session graphiquement
Quand tu ouvres une session graphiquement, aucun shell de login n'est
invoqué.
La variable $SHELL est probablement initialisée à la valeur
indiquée dans /etc/passwd, et divers programmes graphiques peuvent ensuite
faire usage de la valeur de $SHELL ou de la valeur dans /etc/passwd, mais
c'est totalement à la discrétion de ces programmes.
Ok, mais finalement c'est quoi exactement un "shell de login" ?
C'est un shell lancé pour l'établissement d'une session texte sur la
machine, que ce soit en local (mgetty+login) ou par connexion à distance
(ssh).
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
J'employais le terme shell de login pour désigner le processus. Le même
terme peut être employé pour désigner l'option de /etc/passwd. La
correspondance est que c'est le shell désigné par /etc/passwd qui est lancé
comme shell de login.
Par exemple, quand j'ouvre une session graphiquement
Quand tu ouvres une session graphiquement, aucun shell de login n'est
invoqué.
La variable $SHELL est probablement initialisée à la valeur
indiquée dans /etc/passwd, et divers programmes graphiques peuvent ensuite
faire usage de la valeur de $SHELL ou de la valeur dans /etc/passwd, mais
c'est totalement à la discrétion de ces programmes.
Ok, mais finalement c'est quoi exactement un "shell de login" ?
C'est un shell lancé pour l'établissement d'une session texte sur la
machine, que ce soit en local (mgetty+login) ou par connexion à distance
(ssh).
*) Quelle est la différence entre le "shell de login" et le "shell par
défaut" (celui qu'on voit dans /etc/password) ?
J'employais le terme shell de login pour désigner le processus. Le même
terme peut être employé pour désigner l'option de /etc/passwd. La
correspondance est que c'est le shell désigné par /etc/passwd qui est lancé
comme shell de login.
Par exemple, quand j'ouvre une session graphiquement
Quand tu ouvres une session graphiquement, aucun shell de login n'est
invoqué.
La variable $SHELL est probablement initialisée à la valeur
indiquée dans /etc/passwd, et divers programmes graphiques peuvent ensuite
faire usage de la valeur de $SHELL ou de la valeur dans /etc/passwd, mais
c'est totalement à la discrétion de ces programmes.
Heu, je ne suis pas sûr d'avoir compris la réponse. Je crois comprendre
que "shell de login" est synonyme de "shell par défaut", mais je ne suis
pas sûr.
J'ai du mal à comprendre comment des
programmes puissent être exécutés sans qu'il y ait un shell au départ
responsable de cette exécution.
Heu, je ne suis pas sûr d'avoir compris la réponse. Je crois comprendre
que "shell de login" est synonyme de "shell par défaut", mais je ne suis
pas sûr.
J'ai du mal à comprendre comment des
programmes puissent être exécutés sans qu'il y ait un shell au départ
responsable de cette exécution.
Heu, je ne suis pas sûr d'avoir compris la réponse. Je crois comprendre
que "shell de login" est synonyme de "shell par défaut", mais je ne suis
pas sûr.
J'ai du mal à comprendre comment des
programmes puissent être exécutés sans qu'il y ait un shell au départ
responsable de cette exécution.