Voilà, alors je suis en train de m´intéresser au terminal ( pas de commentaire, DasHuhn, mais je pense que tu pourras sûrement m´aider...).
Donc je voulais savoir si il était possible de modifier la variable Path ( c´est une variable donc...).
Ma question serait plutôt : comment la modifier ?
Si je ne fais pas d´erreur ( tu me corrigera. DasHuhn... ; oP ) , cette variable stocks les endroits où le système recherche les commande UNIX. Une commande UNIX, c´est un " simple exécutable", non ?
Alors serait il possible que je donne le nom d´un dossier dans le quel sont stoker des scripts ( AppleScript) et que le système les exécute comme des commandes normales ?
Mieux vaut tard que jamais ; -)
Quel shell ? Sous tcsh ( je sais pas pour les autres) on définit la variable PATH avec ´setenv´. Exemple commenté :
$ . /Helloworld
Bonjour, monde !
$ Helloworld
Helloworld : command not found
$ printenv PATH
/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/us
r/X11R6/bin
$ setenv PATH
/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/us
r/X11R6/bin:./
$ Helloworld
Bonjour, monde !
$
Là je rajoute juste le répertoire courant ( donc, où que je sois, le répertoire actuel sera dans PATH) dans la variable. N´oublie pas les " :".
Maintenant, pour les scripts AppleScript, il faut les utiliser avec ´osascript´, commande dont je ne sais rien. Voilà !
Je vais tester ça ce soir !
vous avez un niveau assez bluffant quand meme ; )
Alors... J´ai réussi a redéfinir path ! Merci DasHuhn !
Bon, je me suis quand même pas mal énervé parce que je n´écrivait pas PATH en majuscule...!
Au moins maintenant j´ai compris qu´avec UNIX il faut être précis ! ; o)
Mais j´ai encore une question. Mon idée avec les Script ne marche pas.
Alors je pensais faire un document ( comme une commande) qui ouvrirait un AppleScript.
Par exemple, j´ai un script ( mute) qui coup le volume de mon Mac. Pour le moment je dois aller dans le dossier commande et taper open mute.app. Es ce qu´il est possible de faire un script dans le shel qui me fasse le " open mute.app" et que j´appellerais " mute" ?
Je ne sais pas si j´ai été très clair !
Quand je pense que Steve s´est fait chier à faire depuis 1984 un OS convivial et accessible à tous, et qu´il y en a encore qui se font chier avec ça comme il y a 20 ans
remarque je vous en veux absolument pas les gars c´est pas contre vous ![]()
Peut-être, mais j´ai découvert une fonction intéressante de Mac OS X, c´est le SSH. Préférences Système -> Partage -> Session a distance.
Avec ça tu commande ton Mac depuis n´importe quel ordinateur connecté au réseau, mais pas la ligne de commende.
Alors vu que j´ai de la plein avec le shell, je veux faire des scripts qui seront le boulot !
Bidule200, Twimsk> Ouste, pas de profanes ici
Joker> Le shell a connu du succès pour sa programmabilité. Tu peux absolument tout faire. Si tu places tes scripts dans un répertoire, disons ~/ScriptsJoker/, tu peux faire un script sh qui les lancera :
case $1 in
mute) open ~/ScriptsJoker/mute.app;;
cmd) open ~/ScriptsJoker/cmd.app;;
esac
J´explique : la première ligne défini l´interpréteur. Quand on utilise des commandes aussi simple que dans ce cas là, pourquoi s´emmerder à charger un shell lourd ( sh est l´un des plus légers et des plus primitifs. On l´utilise pour la compatibilité)
Lors du lancement d´un script ou d´un programme ( ligne de commande ou pas) il y´a toujours des arguments. En shell, $0 est le nom du script, $1 le premier argument suivant le nom sur la ligne de commande, $2 le deuxième, etc...
´case $1 in´ signifie qu´on va comparer l´argument à différentes valeurs. Ici, on le compare à ´mute´ et ´cmd´. Syntaxe :
case < variable> in
< valeur 1> ) [commandes] ; ;
< valeur 2> ) [commandes];;
etc...
esac
N´oublie pas la parenthèse ou les deux point-virgules. Pour éviter les ennuis, rajoute un ´ *) ´ à la fin, car l´astérisque signifie ´tout´. Exemple, si un fichier s´appelle ´fichierexemple´, on peut le détruire par ´rm f*e´ ( en même temps que tout ce qui commence par un f et fini par un e).
Voili voilou. Rajoute les possibilités de ´case´ en fonction. Tu peux aussi tester :
open $1.app
qui est plus court et moins instructif, et qui ne contient pas de contrôle d´erreur.
PS : SSH est un des classiques d´Unix. Il y´a d´autres programmes de contrôle, mais SSH crypte en plus les données. Plutôt que de lancer un programme à qui on donne au fur et à mesure les commandes, tu peux faire
$ programme < < EOF
? Commande 1
? Commande 2
. ..
? EOF
$
t´as oublié un point a la fin ![]()
Attends, attends, attends... Commençant par le début ( je suis quand même un novice, moins d´une semaine d´UNIX) !
Où es ce que je tape le script ? Comment es ce que je le sauve ?
C´est un script de texte pur, à sauvegarder sous n´importe quel nom ( on te l´a jamais dit : Unix se fout du nom d´un fichier, du moment que tu respectes la casse). Ensuite, tu le rends executable ( ´chmod 755 $nomdufichier´ ) . Tu n´auras plus qu´à le lancer en tapant son nom si il est dans un des répertoires de PATH, ou en te positionnant dans son répertoire et en tapant
$ . /$nomdufichier
Tu sais quoi pour le moment ? Parce qu´avant de s´interesser aux variables d´environnement faudrait déjà savoir comment ça marche en gros...
Bon, ben j´y arrive pas. J´ai ouvert Textedit, j´ai écris ça :
case $1 in
mute) open ~/Commandes/mute.app;;
cmd) open ~/Commandes/cmd.app;;
esac
J´ai passer le fichier dans chmod et si je l´ouvre, il me dis :
tcsh: mute2: Undefined variable.
Et un truc encore. Chaque fois que je ferme le terminal, je perds la modification de path. Comment je fais pour la garder ?
Comme tu as pu le voir j´ai pas un haut niveau !
1) Tu l´as modifié et t´as fais une erreur de syntaxe
2) Tu l´as enregistré en autre chose que du . txt. Chez moi ça fonctionne.
Pour garder PATH... je sais pas, au lancement du shell sans doute. ´man bash´ ou ´man tcsh´ en fonction de ce que tu utilises, et tu cherches la liste des fichiers lancés au démarrage du shell.
Euh...
2) ( correction) Tu l´as enregistré dans un autre format que le texte simple. Essaye . sh
1) Voilà ce que j´ai écris :
case $1 in
mute) open ~/Commandes/mute.app;;
cmd) open ~/Commandes/cmd.app;;
esac
Mais j´ai la vague impression que même avec une erreur de syntaxe j´aurais un autre message que :
tcsh: mute2.sh: Command not found.
Donc a mon avis c´est clair que l´erreur n´est pas dans la syntaxe.
2) Je l´ai enregistrer en txt ( faut pas me prendre pour un blaireau non plus j´ai pas faut in rtf ! ). Je peux bien mettre . sh, mais ça ne change rien.
J´ai bien modifier path, elle accède au dossier commandes.
Qu´es ce que j´ai oublier ?
Juste une question : ça à l´air vachement prise de tête vos trucs, mais ça va servir à quoi concrètement sur l´ordi ( je ne connais pas les commandes de programmation) ?
Comme je l´ai déjà dis, mon but est de contrôler mon Mac à distance par SSH ( Préférences Système -> Partage ->Session a distance). Avec ça tu te logue sur ton Mac depuis n´importe où sur Internet et tu commande ton Mac comme si tu étais sur le terminal.
Ce que je veux faire c´est attribuer des AppleScript à des nom de commande pour faire des trucs sur mon Mac quand je ne suis pas chez moi. Par exemple : couper le volume, démarrer le serveur ftp, éteindre l´ordinateur...
Il y a des tonnes de choses a faire !
Mais on dois passer par une étape qui est compliquée pour arrivé à quelque chose qui simplifiera tous en donnant des possibilité de contrôle en réseau.
( Là le PATH n´a rien à voir ^^)
Chez moi ça fonctionne, que ce soit sur MacOS X ( tcsh) ou Linux ( bash. Cela dit, ça reste interprété par sh). Je comprends même pas pourquoi y´a un " mute2" ou un " .sh" dans le message d´erreur.
Bidule200> C´est pas " prise de tête", en tout cas pas pour moi.
Ton script s´appelle comment ? mute2.sh ? Tu l´as rendu executable ? Et surtout, tu l´appelles bien par " ./mute2.sh" ?
Il est exécutable, mais je ne tapais pas le bon truc. Maintenant j´ai :
? Commande inconnue =(
Ah oki. Mais pourquoi ne pas demander à Jobs d´intégrer ces fonctions dans une mise à jour ? En quelque sorte améliorer de + en + le système, car si vous savez le faire alors la machine sait le faire toute seule !