j'ai installé zsh sur une station tournant sous HP-UX (je ne connais pas
la version). Je souhaiterais utiliser zsh. En consultant le manuel de
chsh, on me dit qu'il faut que le shell soit référencé dans le fichier
/etc/shells. Or, je n'ai pas le droit d'écrire dans ce fichier. Comment
puis-je faire pour pouvoir dire que je veux utiliser zsh avc chsh, sans
qu'il me jette? Actuellement, je suis sous bash. Dans le fichier
.bashrc, j'ai fé un exec /mon/repertoire/vers/zsh. Je pense pas que ce
soit joli mais bon, j'ai trouvé que ça ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2004-09-28, 13:11(+02), did:
j'ai installé zsh sur une station tournant sous HP-UX (je ne connais pas la version). Je souhaiterais utiliser zsh. En consultant le manuel de chsh, on me dit qu'il faut que le shell soit référencé dans le fichier /etc/shells. Or, je n'ai pas le droit d'écrire dans ce fichier. Comment puis-je faire pour pouvoir dire que je veux utiliser zsh avc chsh, sans qu'il me jette? Actuellement, je suis sous bash. Dans le fichier .bashrc, j'ai fé un exec /mon/repertoire/vers/zsh. Je pense pas que ce soit joli mais bon, j'ai trouvé que ça ;) [...]
Tu peux mettre:
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
faire un chsh et mettre /bin/sh a la place de bash puisque tu n'as plus besoin de bash.
SHELL est utilisé par des applis comme xterm pour savoir quel shell lancer.
-- Stephane
2004-09-28, 13:11(+02), did:
j'ai installé zsh sur une station tournant sous HP-UX (je ne connais pas
la version). Je souhaiterais utiliser zsh. En consultant le manuel de
chsh, on me dit qu'il faut que le shell soit référencé dans le fichier
/etc/shells. Or, je n'ai pas le droit d'écrire dans ce fichier. Comment
puis-je faire pour pouvoir dire que je veux utiliser zsh avc chsh, sans
qu'il me jette? Actuellement, je suis sous bash. Dans le fichier
.bashrc, j'ai fé un exec /mon/repertoire/vers/zsh. Je pense pas que ce
soit joli mais bon, j'ai trouvé que ça ;)
[...]
Tu peux mettre:
SHELL=/mon/repertoire/vers/zsh
export SHELL
case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
faire un chsh et mettre /bin/sh a la place de bash puisque tu
n'as plus besoin de bash.
SHELL est utilisé par des applis comme xterm pour savoir quel
shell lancer.
j'ai installé zsh sur une station tournant sous HP-UX (je ne connais pas la version). Je souhaiterais utiliser zsh. En consultant le manuel de chsh, on me dit qu'il faut que le shell soit référencé dans le fichier /etc/shells. Or, je n'ai pas le droit d'écrire dans ce fichier. Comment puis-je faire pour pouvoir dire que je veux utiliser zsh avc chsh, sans qu'il me jette? Actuellement, je suis sous bash. Dans le fichier .bashrc, j'ai fé un exec /mon/repertoire/vers/zsh. Je pense pas que ce soit joli mais bon, j'ai trouvé que ça ;) [...]
Tu peux mettre:
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
faire un chsh et mettre /bin/sh a la place de bash puisque tu n'as plus besoin de bash.
SHELL est utilisé par des applis comme xterm pour savoir quel shell lancer.
-- Stephane
did
Tu peux mettre:
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
faire un chsh et mettre /bin/sh a la place de bash puisque tu n'as plus besoin de bash.
SHELL est utilisé par des applis comme xterm pour savoir quel shell lancer.
mmm oki, j'avais definit SHELL comme indiqué ci dessus. Je vais rajouter le case.
Merci :) did
Tu peux mettre:
SHELL=/mon/repertoire/vers/zsh
export SHELL
case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
faire un chsh et mettre /bin/sh a la place de bash puisque tu
n'as plus besoin de bash.
SHELL est utilisé par des applis comme xterm pour savoir quel
shell lancer.
mmm oki, j'avais definit SHELL comme indiqué ci dessus. Je vais rajouter
le case.
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
ajouter aussi l'option "-l" si $0 commence par un "-".
Faire un text -x $SHELL avant tout, pour être plus sûr.
Stephane Chazelas
2004-09-29, 09:12(+00), Laurent Wacrenier:
Stephane Chazelas écrit:
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
ajouter aussi l'option "-l" si $0 commence par un "-".
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais /etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
SHELL=/mon/repertoire/vers/zsh
export SHELL
case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
ajouter aussi l'option "-l" si $0 commence par un "-".
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle
infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais
/etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh
if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then
SHELL=$new_SHELL export SHELL
case $- in *i*) exec "$SHELL" -l;; esac
fi
SHELL=/mon/repertoire/vers/zsh export SHELL case $- in *i*) exec "$SHELL";; esac
a la find de ton ~/.profile
ajouter aussi l'option "-l" si $0 commence par un "-".
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais /etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
-- Stephane
Laurent Wacrenier
Stephane Chazelas écrit:
ajouter aussi l'option "-l" si $0 commence par un "-".
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Si on lance "zsh -l", $0 vaut "zsh" et non pas "-zsh" ou "-sh", comme ce que mettrait "login".
ajouter aussi l'option "-l" si $0 commence par un "-".
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Si on lance "zsh -l", $0 vaut "zsh" et non pas "-zsh" ou "-sh", comme ce que mettrait "login".
Stephane Chazelas
2004-09-29, 10:31(+00), Laurent Wacrenier:
ajouter aussi l'option "-l" si $0 commence par un "-". [...]
Si on lance "zsh -l", $0 vaut "zsh" et non pas "-zsh" ou "-sh", comme ce que mettrait "login".
Ah oui, bien sur, au temps pour moi.
Moi, je prefere:
1 - le shell de login est celui de /etc/passwd - on redefinit le shell de *preference* dans ~/.profile - et on le lance pour les sessions interactives
que
2 - on redefinit le shell de login dans ~/.profile - on le lance
Le 2 a l'avantage de lancer le ~/.<nouveaushell>logout lors du logout d'une session terminal. Mais le 1 a l'avantage d'etre coherent en faisant la distinction entre "shell de login" et "shell de preference" (en particulier pour les sessions X ou non interactives), le 2 etant plus une bidouille qui marchouille (on ne redefinit pas vraiment le shell de login, getpwnam retourne toujours le /vrai/ "shell de login"). Le 2 va aussi lire deux fois les /etc/profile
Cela dit, l'un comme l'autre est probablement satisfaisant pour l'OP.
-- Stephane
2004-09-29, 10:31(+00), Laurent Wacrenier:
ajouter aussi l'option "-l" si $0 commence par un "-".
[...]
Si on lance "zsh -l", $0 vaut "zsh" et non pas "-zsh" ou "-sh", comme
ce que mettrait "login".
Ah oui, bien sur, au temps pour moi.
Moi, je prefere:
1
- le shell de login est celui de /etc/passwd
- on redefinit le shell de *preference* dans ~/.profile
- et on le lance pour les sessions interactives
que
2
- on redefinit le shell de login dans ~/.profile
- on le lance
Le 2 a l'avantage de lancer le ~/.<nouveaushell>logout lors du
logout d'une session terminal. Mais le 1 a l'avantage d'etre
coherent en faisant la distinction entre "shell de login" et
"shell de preference" (en particulier pour les sessions X ou non
interactives), le 2 etant plus une bidouille qui marchouille
(on ne redefinit pas vraiment le shell de login, getpwnam
retourne toujours le /vrai/ "shell de login"). Le 2 va aussi
lire deux fois les /etc/profile
Cela dit, l'un comme l'autre est probablement satisfaisant pour
l'OP.
ajouter aussi l'option "-l" si $0 commence par un "-". [...]
Si on lance "zsh -l", $0 vaut "zsh" et non pas "-zsh" ou "-sh", comme ce que mettrait "login".
Ah oui, bien sur, au temps pour moi.
Moi, je prefere:
1 - le shell de login est celui de /etc/passwd - on redefinit le shell de *preference* dans ~/.profile - et on le lance pour les sessions interactives
que
2 - on redefinit le shell de login dans ~/.profile - on le lance
Le 2 a l'avantage de lancer le ~/.<nouveaushell>logout lors du logout d'une session terminal. Mais le 1 a l'avantage d'etre coherent en faisant la distinction entre "shell de login" et "shell de preference" (en particulier pour les sessions X ou non interactives), le 2 etant plus une bidouille qui marchouille (on ne redefinit pas vraiment le shell de login, getpwnam retourne toujours le /vrai/ "shell de login"). Le 2 va aussi lire deux fois les /etc/profile
Cela dit, l'un comme l'autre est probablement satisfaisant pour l'OP.
-- Stephane
did
Stephane Chazelas wrote:
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais /etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait pas bien de mettre juste :
SHELL=/mon/repertoire/vers/zsh export SHELL
exec $SHELL
Si quelqu'un peut m'expliquer, ça serait cool :)
did
Stephane Chazelas wrote:
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle
infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais
/etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh
if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then
SHELL=$new_SHELL export SHELL
case $- in *i*) exec "$SHELL" -l;; esac
fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait
pas bien de mettre juste :
Si on met ca dans ~/.profile, c'est que c'est un shell de login.
Si on lance le nouveau shell avec -l, on va avoir une boucle infinie, vu que le nouveau shell va relire le ~/.profile.
Ce qu'on peut faire c'est mettre au debut du ~/.profile (mais /etc/profile va etre lu deux fois quand-meme):
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait pas bien de mettre juste :
SHELL=/mon/repertoire/vers/zsh export SHELL
exec $SHELL
Si quelqu'un peut m'expliquer, ça serait cool :)
did
Stephane Chazelas
2004-10-01, 09:26(+02), did: [...]
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait pas bien de mettre juste :
SHELL=/mon/repertoire/vers/zsh export SHELL
exec $SHELL [...]
Si on lance le shell avec l'option "-l" (option qui n'est pas reconnues par tous les shells), ca en fait un shell de login. Dans ce cas, il source les fichiers /etc/profile (ou zprofile, zlogin, csh.login, bashprofile suivant le shell), ~/.profile, se comportent legerement differemment (par exemple vis-a-vis de la commande "logout" sous csh/zsh) et a la fin, certains vont sourcer des fichiers ~/.logout (~/.zlogout...). (Ca peut etre utile).
Donc, si tu te contentes de mettre un exec "$SHELL" -l dans ton ~/.profile, tu auras une boucle infinie (le nouveau shell va relire ce .profile et refaire un exec et ainsi de suite), d'ou le if [ "x$SHELL" != "x$new_SHELL" ]
Le [ -x "$SHELL" ], ca peut-etre utile, car si ce shell n'est pas executable, tu ne pourras plus te logguer.
case $- in *i*) ca verifie que le shell est interactif. Ca peut-etre utile pour le cas ou ~/.profile est lu par exemple par le Xsession pour demarrer une session X. Si tu mets un "exec zsh" alors que Xsession fait:
new_SHELL=/mon/repertoire/vers/zsh
if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then
SHELL=$new_SHELL export SHELL
case $- in *i*) exec "$SHELL" -l;; esac
fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait
pas bien de mettre juste :
SHELL=/mon/repertoire/vers/zsh
export SHELL
exec $SHELL
[...]
Si on lance le shell avec l'option "-l" (option qui n'est pas
reconnues par tous les shells), ca en fait un shell de login.
Dans ce cas, il source les fichiers /etc/profile (ou zprofile,
zlogin, csh.login, bashprofile suivant le shell), ~/.profile, se
comportent legerement differemment (par exemple vis-a-vis de la
commande "logout" sous csh/zsh) et a la fin, certains vont
sourcer des fichiers ~/.logout (~/.zlogout...). (Ca peut etre
utile).
Donc, si tu te contentes de mettre un exec "$SHELL" -l dans ton
~/.profile, tu auras une boucle infinie (le nouveau shell va
relire ce .profile et refaire un exec et ainsi de suite), d'ou
le if [ "x$SHELL" != "x$new_SHELL" ]
Le [ -x "$SHELL" ], ca peut-etre utile, car si ce shell n'est
pas executable, tu ne pourras plus te logguer.
case $- in *i*) ca verifie que le shell est interactif. Ca
peut-etre utile pour le cas ou ~/.profile est lu par exemple par
le Xsession pour demarrer une session X. Si tu mets un "exec
zsh" alors que Xsession fait:
new_SHELL=/mon/repertoire/vers/zsh if [ "x$SHELL" != "x$new_SHELL" ] && [ -x "$SHELL" ]; then SHELL=$new_SHELL export SHELL case $- in *i*) exec "$SHELL" -l;; esac fi
Je comprends pas trop pourquoi on fait tout ça... :/ Pourquoi ça serait pas bien de mettre juste :
SHELL=/mon/repertoire/vers/zsh export SHELL
exec $SHELL [...]
Si on lance le shell avec l'option "-l" (option qui n'est pas reconnues par tous les shells), ca en fait un shell de login. Dans ce cas, il source les fichiers /etc/profile (ou zprofile, zlogin, csh.login, bashprofile suivant le shell), ~/.profile, se comportent legerement differemment (par exemple vis-a-vis de la commande "logout" sous csh/zsh) et a la fin, certains vont sourcer des fichiers ~/.logout (~/.zlogout...). (Ca peut etre utile).
Donc, si tu te contentes de mettre un exec "$SHELL" -l dans ton ~/.profile, tu auras une boucle infinie (le nouveau shell va relire ce .profile et refaire un exec et ainsi de suite), d'ou le if [ "x$SHELL" != "x$new_SHELL" ]
Le [ -x "$SHELL" ], ca peut-etre utile, car si ce shell n'est pas executable, tu ne pourras plus te logguer.
case $- in *i*) ca verifie que le shell est interactif. Ca peut-etre utile pour le cas ou ~/.profile est lu par exemple par le Xsession pour demarrer une session X. Si tu mets un "exec zsh" alors que Xsession fait:
case $- in *i*) ca verifie que le shell est interactif. Ca peut-etre utile pour le cas ou ~/.profile est lu par exemple par le Xsession pour demarrer une session X. Si tu mets un "exec zsh" alors que Xsession fait:
case $- in *i*) ca verifie que le shell est interactif. Ca
peut-etre utile pour le cas ou ~/.profile est lu par exemple par
le Xsession pour demarrer une session X. Si tu mets un "exec
zsh" alors que Xsession fait:
case $- in *i*) ca verifie que le shell est interactif. Ca peut-etre utile pour le cas ou ~/.profile est lu par exemple par le Xsession pour demarrer une session X. Si tu mets un "exec zsh" alors que Xsession fait: