.profile, X11 et le Terminal

einqui

Membre émérite
27 Janvier 2003
657
30
45
Tokyo, Japon
www.ealight.com
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 :zen:
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 944
3 181
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 :D ). 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

Membre junior
7 Décembre 2005
51
0
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. :mad:
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

El Moderador
Modérateur
Club MacG
12 Février 2004
41 944
3 181
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

Membre junior
7 Décembre 2005
51
0
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

Membre émérite
27 Janvier 2003
657
30
45
Tokyo, Japon
www.ealight.com
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?
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 944
3 181
Pour X11, il faut que je révise un peu :D Depuis que je suis sous Mac, je n'ai pas encore édité mon .xinitrc !!
Les liens symboliques, je les fais toujours dans le Terminal :
Bloc de code:
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 :
Bloc de code:
open -a TOTO

2) si l'applicatif TOTO n'a pas encore été lancé, il vaut peut-être mieux indiquer le chemin complet :
Bloc de code:
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

Vétéran
1 Juin 2004
5 174
494
Stanford CA
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/*'