OVH Cloud OVH Cloud

script bash

10 réponses
Avatar
jip
bonjour,

j'en ai assez de taper:
cd /mnt/floppy

j'ai donc écrit ce mini-script:

#! /bin/sh
# script: /usr/local/bin/d7
cd /mnt/floppy
ls -l

au lancement de: d7, il affiche bien le contenu de la disquette
mais ne "place" pas l'utilisateur dans /mnt/floppy (il reste
dans son /home)...
bizarre ?

merci
jip

(cette question est peut être "limite" pour être posée dans ce
forum.... veuillez m'en excuser)

10 réponses

Avatar
dominique becaert

#! /bin/sh
# script: /usr/local/bin/d7
cd /mnt/floppy
ls -l

au lancement de: d7, il affiche bien le contenu de la disquette
mais ne "place" pas l'utilisateur dans /mnt/floppy (il reste
dans son /home)...
bizarre ?


Mais non ce n'est pas bizarre : le script fait ... ce que tu lui
demandes de faire :-)
Si tu veux absolument rester dans le même shell, il faut lancer ton
script de cette manière :
. /usr/local/bin/d7
--
"Pour qu'il y ait le moins de mécontents possible,
il faut toujours taper sur les mêmes" - Proverbe Shadok

Avatar
Nicolas George
jip wrote in message <cfd9rs$4gv$:
#! /bin/sh


Si ton script est un script bash, il faut écrire « #! /bin/bash ».
Sinon, c'est un script sh.

mais ne "place" pas l'utilisateur dans /mnt/floppy (il reste
dans son /home)...
bizarre ?


C'est normal, cd n'agit que sur les descendants du shell qui l'exécute.
Tu peux essayer d'exécuter ton script avec « . d7 », ou bien d'en faire
une fonction shell.

Avatar
jip

C'est normal, cd n'agit que sur les descendants du shell qui l'exécute.
Tu peux essayer d'exécuter ton script avec « . d7 », ou bien d'en faire
une fonction shell.


le . d7 me va très bien....

merci de vos conseils,
jip

Avatar
Vincent Couquiaud
On 2004-08-11, jip wrote:

bonjour,


Salut,

j'en ai assez de taper:
cd /mnt/floppy

j'ai donc écrit ce mini-script:

#! /bin/sh
# script: /usr/local/bin/d7
cd /mnt/floppy
ls -l


On peut faire un alias:

Bash-2.05b$ alias d7="cd /mnt/floppy && ls -l"

À mettre dans le .bash_profile.

--
www.trollomaths.org
E-mail: remove "pasde", "pub" and ".invalid".

Avatar
Nicolas George
Vincent Couquiaud wrote in message
<cfde93$lg7$:
À mettre dans le .bash_profile.


Non, si on le met là, ce n'est normalement lu que pour le shell de
login, pas pour un shell dans un xterm par exemple. Le bon endroit pour
placer ça est .bashrc. Il est vrai que certaines distributions débiles
lisent .bash_profile depuis .bashrc, mais ce n'est pas une raison pour
ne pas mettre les choses au bon endroit.

Avatar
Vincent Couquiaud
On 2004-08-11, Nicolas George wrote:

Vincent Couquiaud wrote in message
<cfde93$lg7$:
À mettre dans le .bash_profile.


Non, si on le met là, ce n'est normalement lu que pour le shell de
login, pas pour un shell dans un xterm par exemple.


Je sais bien. Mais on se logue au moins une fois non? Donc il est lu au
moins une fois.

Le bon endroit pour
placer ça est .bashrc.


Pour l'instant, pour moi, ça reste le .bash_profile.
Mais je veux bien qu'on essaie de me faire changer d'avis si j'ai dit
encore une connerie. ;-)

Il est vrai que certaines distributions débiles
[SNIP]


C'est quoi une distribution débile? Surtout ne me sort pas Mandrake.

--
www.trollomaths.org
E-mail: remove "pasde", "pub" and ".invalid".


Avatar
Nicolas George
Vincent Couquiaud wrote in message
<cfdkfb$3fa$:
Je sais bien. Mais on se logue au moins une fois non? Donc il est lu au
moins une fois.


Les alias ne s'héritent pas. Seul le shell qui aura lui-même lu
.bash_profile verra cet alias.

C'est quoi une distribution débile?


Tu as déjà un critère : lire .bash_profile depuis .bashrc.

Avatar
Vincent Couquiaud
On 2004-08-11, Nicolas George wrote:

Les alias ne s'héritent pas. Seul le shell qui aura lui-même lu
.bash_profile verra cet alias.


Ah mince, c'est vrai ça.
Bon ben, ok, on met dans .bashrc.

--
www.trollomaths.org
E-mail: remove "pasde", "pub" and ".invalid".

Avatar
Nicolas
jip wrote:

bonjour,

j'en ai assez de taper:
cd /mnt/floppy

j'ai donc écrit ce mini-script:

#! /bin/sh
# script: /usr/local/bin/d7
cd /mnt/floppy
ls -l

au lancement de: d7, il affiche bien le contenu de la disquette
mais ne "place" pas l'utilisateur dans /mnt/floppy (il reste
dans son /home)...
bizarre ?

merci
jip

(cette question est peut être "limite" pour être posée dans ce
forum.... veuillez m'en excuser)






Le script est écrit en sh....
Si tu le lance depuis un autre shell (bash ? vérifie avec ECHO $SHELL ),
un shell /bin/sh sera lancé et c'est dans son contexte que se fera le
changement de répertoire. Quand le script est fini, le /bin/sh
s'arrête... et tu te retrouves dans ton ancien script, avec son
environnement au moment où tu as lancé le script, y compris le
répertoire courant (/home en l'occurrence).

Dans la 1e ligne remplace la ligne #! /bin/sh par celle décrivant ton
shell à toi et çà devrait mieux se passer.

Nico

Avatar
Nicolas George
Nicolas wrote in message <cftji8$dli$:
Dans la 1e ligne remplace la ligne #! /bin/sh par celle décrivant ton
shell à toi et çà devrait mieux se passer.


Non, pas du tout. Ce sera son shell qui exécutera le script, mais arrivé
à la fin, il va naturellement se terminer et rendre la main au shell
parent.