# .profile, X11 et le Terminal



## einqui (6 Décembre 2005)

Bonjour,

   Pour les besoins d'un logiciel, j'ai du creer un fichier .profile de facon a charger tout un tas de variable a chaque lancement du terminal. 

   Cela fonctionne tres bien lorsque je lance le terminal. Les variables ont bien la valeur que je souhaitais leur attibuer. Mais si je lance X11, le .profile n'a visiblement pas ete lu.

   Comment faire pour que X11 lise le .profile?

Et au passage, cela me fait me poser une question (de grand debutant) : quelle est techniquement (mais simplement SVP ) la différence entre X11 et le terminal??

Merci d'avance


----------



## bompi (6 Décembre 2005)

Le Terminal : c'est un environnement en mode texte, ou caractère, si tu veux. Dans lequel on ne fait généralement pas de graphisme. Lorsqu'on lance un Terminal, on lance en même temps une application appelée _shell_ (rien à voir avec le groupe Royal Dutch Shell mais bien avec l'idée de coquille  ). Dans le cadre du shell, on tape des commandes avec leurs paramètres et le shell se charge de les exécuter. Il y a possibilité de lancer plusieurs commandes simultanément, consécutivement, etc. Le shell offre de surcroît des fonctionnalités qui aident l'utilisateur : complétion de commande, raccourcis ou alias etc. Enfin, il existe de nombreux shells dont les plus connus sont : sh (et bash), csh (et tcsh), ksh (et zsh). Tous sont disponibles dans Mac OS X. En fait ce sont les versions "libres" qui sont disponibles (donc bash et tcsh).

Quant à X11 : c'est un environnement graphique organisé en client/serveur. Un serveur X est lancé sur une carte graphique + un écran. Un client demande alors au serveur de tracer des objets graphiques plus ou moins sophistiqués (rectangles, ellipses ...), plus ou moins organisés (fenêtres, boutons, champs texte ...) et plus ou moins complexes (image, vectoriel, polices de caractères ...). X11 est une spécification réalisée par plusieurs groupes (SUN, XFree ...) avec de petites différences entre eux. Mais fondamentalement, tous les serveurs X11 sont compatibles _a minima_ entre eux. Par ailleurs, X11 est le système graphique de choix sur Unix ... sauf pour mac OS X  Mais Apple a fait un assez bon travail d'intégration de X11 à son propre environnement.

Passons à ton souci : si tu es sous Jaguar (10.2.x) ou en-deça, ton shell est sans doute csh. Dans ce cas, mieux vaut éditer le fichier .cshrc plutôt que .profile. Si tu es sous Panther ou Tiger, ton shell est sans doute bash et, dans ce cas, mieux vaut éditer le fichier .bashrc plutôt que .profile.


----------



## hopkins (7 Décembre 2005)

bonjour,
j'ai un problème assez semblable. Je souhaite ajouter une entrée dans la variable PATH pour x11. Elle existe déjà pour le shell classique mais lorsque je démarre un xterm alors ma variable PATH ne conserve pas l'environnement défini. 
Du coup j'ai essayé d'éditer le .xinitrc avec un
PATH="$PATH:/usr/local/bin"
export PATH
...mais sans succès
bref si quelqu'un sait comment faire ...


----------



## bompi (7 Décembre 2005)

Ce n'est sûrement pas dans .xinitrc que cela se passe.

Il y a des subtilités quant au fichier lu au démarrage des shells, suivant que l'on est en mode login ou non. Pour éviter de se casser le bonnet pour rien dans le cas général, je mets mes alias et variables d'environnement dans le fichier ~/.bashrc et fait un lien symbolique de ~/.bash_profile vers ~/.bashrc

De la sorte, que j'utilise Terminal ou xterm, c'est du kif : ma variable PATH et toutes ses copines sont comme espérées.


----------



## hopkins (7 Décembre 2005)

merci pour l'astuce. J'ai donc édité le ~/.bashrc pour y ajouter le nouveau chemin et pour éviter la redondance (car le chemin existait déjà mais uniquement pour le shell) j'ai retiré du /etc/profile la ligne correspondante. voilà la topo
tiens puisque visiblement tu as réponse à tout  , comment ferais tu pour assurer un lancement élégant d'un applicatif (issu d'un dmg) depuis le shell ?


----------



## einqui (7 Décembre 2005)

OK, merci pour ton explication.
Donc, si je comprends bien, le logiciel que je souhaite utiliser ayant besoin de lancer une interface, il faut le lancer sous X11 et non sous le terminal.

Sinon, j'ai mis les definitions de variable dans un fichier .bashrc, mais le terminal ne les a pas lues. Alors qu'il les lit correctement dans un .profile
Le shell que j'utilise est pourtant bien bash d'apres la commande "echo $SHELL"

Edit : En fait, il s'avere que le terminal lit le .profile tandis que X11 lit le .bashrc 
Est-ce que l'astuce du lien symbolique (comment qu'on fait?) mentionnee plus haut fonctionnerait aussi pour mon probleme?


----------



## daffyb (7 Décembre 2005)

et dans le .login


----------



## bompi (7 Décembre 2005)

Pour X11, il faut que je révise un peu  Depuis que je suis sous Mac, je n'ai pas encore édité mon .xinitrc !!
Les liens symboliques, je les fais toujours dans le Terminal :

```
ln -s ~/.bashrc ~/.bash_profile
```

Pour lancer un applicatif depuis le shell :
1) si l'applicatif TOTO a déjà été lancé, il suffira de faire :

```
open -a TOTO
```

2) si l'applicatif TOTO n'a pas encore été lancé, il vaut peut-être mieux indiquer le chemin complet :

```
open -a /chemincomplet/TOTO.app
```

J'en profite : le terminal, c'est cool  et il y a pléthore de commandes correspondant aux commandes graphiques.


----------



## tatouille (7 Décembre 2005)

c'est lancé une seule fois une seule init pas à chaque fois   

alias safari 'open -a Safari'
alias preview 'open -a Preview'
alias itunes 'open -a iTunes'
alias ichat 'open -a iChat'
alias iphoto 'open -a iPhoto'
alias emptytrash 'rm -R ~/.Trash/*'


----------



## hopkins (7 Décembre 2005)

c'est exactement cette commande que je cherchais 
merci


----------



## hopkins (7 Décembre 2005)

bompi a dit:
			
		

> J'en profite : le terminal, c'est cool  et il y a pléthore de commandes correspondant aux commandes graphiques.


d'autant plus que mon leitmotiv c'est l'efficacité !


----------



## einqui (8 Décembre 2005)

OK, je teste ca.
Merci


----------

