SHELL lancement d'un shell

Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 22 mai 2007 à 10:52
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 23 mai 2007 à 15:15
Bonjour,

encore une éngme pour moi :

J'ai un script de configuration de variables d'environnement pour un utilisateur.
Ce script est exécutable.

Pour le lancer, si je fais :
/home/monuser/monscript
aucune variable ne s'initialise.
Idem si je fais
sh /home/monuser/monscript

On m'a dit qu'il faut faire :
. /home/monuser/monscript

Et en effet, çà marche.

Mais pourquoi ??

Merci
A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
22 mai 2007 à 11:08
Salut,

Tu peux aussi écrire :
source /home/tonuser/sonscript
Le "." ou "source" demande à ce que le script soit exécuté dans l'environnement en cours.

Voir à ce sujet le man bash :
man bash -P 'less -p "       source"'
;-))
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
22 mai 2007 à 14:03
Mais je ne comprends pas:

Tous les scripts ne sont-ils pas exécutés dans l'environnement en cours quand ils sont lancés par un user ?
Enfin je veux dire l'environnement en cours du user ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
22 mai 2007 à 14:23
Tous les scripts ne sont-ils pas exécutés dans l'environnement en cours
Pas "dans", mais "par" l'environnement en cours ce qui a pour effet de créer un processus fils (fork).

Le fait de "sourcer" un script, demande son exécution dans l'environnement en cours, le shell lit le script ligne à ligne et l'interprète directement.
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 mai 2007 à 14:42
tlep, pour comprendre l'interet que le shell se fork, c-a-d crée un processus-fils , essaye d'exécuter la commande :
. ls
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118 > dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024
22 mai 2007 à 17:12
ca me donne:

. ls
-bash:ELF: command not found

:-|
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617 > dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024
23 mai 2007 à 13:58
il y a un espace entrre le . et ls

.<espace> ls
0