Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ UNIX _ [SHELL] variables d'environnement (résolu à moitié)

Écrit par : clarusad 6 Feb 2010, 11:30

Bonjour à tous,

Comment et où, à l'instar de Linux, modifier ses variables d'environnement sous mac OS X ?
Je voudrais faire deux choses :

1) indiquer au système cet endroit de stockage de binaires : /sw/bin ;
2) que le système m'avertisse avant que je fasse un rm (je voudrais qu'il suffixe cette commande avec -i : rm -i).

Merci à tous pour votre aide.

Écrit par : guerom00 6 Feb 2010, 12:41

Comme d'habitude : t'as un fichier d'initialisation dépendant du shell que tu utilises. Sous OS X, c'est du bash. Tu as donc un fichier dénommé .profile dans ton home dans lequel tu te définis toutes ces variables.

Écrit par : clarusad 6 Feb 2010, 14:00

Pour ce qui est de l'avertissement, j'ai modifié ce fichier :

Code
~/.profile

en y ajoutant :
Code
alias rm='rm -i'

mais ça ne fonctionne pas.

En ce qui concerne le chemin de (mes) binaires, je crois qu'il faut modifier la variable d'environnement $PATH,
mais je ne sais pas comment faire car je croyais la trouver dans mon home... mais non !

Écrit par : noop 6 Feb 2010, 14:04

c'est dans le fichier .bash_profile qu'il faut faire ca

Écrit par : clarusad 6 Feb 2010, 15:22

Merci :-)

Me reste plus qu'à "résoudre" le souci de la variable d'environnement $PATH.
En attendant de trouver une solution propre, j'ai fait un :

Citation
ln /sw/bin/toto /bin

de sorte de faire un alias du binaire toto là où il devrait être.

Écrit par : fgiron 6 Feb 2010, 15:51

Pour /sw/bin, tout simplement doit se trouver dans .bashrc la ligne suivante débutant par le point:

Code
. /sw/bin/init.sh

Le path est en effet défini dans ce fichier /sw/bin/init.sh.

Pour 'rm -i':
Code
alias rm='rm -i'


Pour que ça fonctionne, il faut redémarrer un shell ou lancer la commande 'rehash' (mais je crois qu'elle est spécifique à zsh).

Écrit par : flan 7 Feb 2010, 00:30

Citation (noop @ 6 Feb 2010, 14:04) *
c'est dans le fichier .bash_profile qu'il faut faire ca

Ou .bashrc, suivant qu'on se connecte en ssh ou directement.

Écrit par : clarusad 13 Feb 2010, 23:38

Effectivement, c'est .bash_profile qu'il faut modifier : j'ai donc un avertissement lors de la suppression d'un fichier. Parfait (je suis parfois étourdi).
En revanche, ça m'amène à une seconde question : en modifiant ce fichier, désormais lorsque j'ouvre un terminal j'ai l' alias qui se met dans l'invite ; c'est n'importe quoi !

Code
Welcome to Darwin!
alias rm='rm -i'
PowerMac:~ clarusad$

C'est normal ça ???

Merci à tous pour votre aide.

Écrit par : flan 15 Feb 2010, 14:53

poste ton .bash_profile complet, c'est sûrement une erreur de syntaxe.

Écrit par : clarusad 15 Feb 2010, 16:56

voilà :

Code
alias rm='rm -i'
alias rm -d='rm -di'

C'est tout simple : il n'y à que ça.

Écrit par : flan 16 Feb 2010, 02:53

Citation (clarusad @ 15 Feb 2010, 16:56) *
voilà :
Code
alias rm='rm -i'
alias rm -d='rm -di'

C'est tout simple : il n'y à que ça.

C'est la seconde ligne.

avec alias, tu remplaces un nom (ici rm) par une chaîne (ici 'rm -i' )
Avec ta seconde ligne, il perd les pédales, vu que tu ne respectes pas la syntaxe (tu essaies d'aliaser rm -d, c'est-à-dire une commande avec un argument), du coup, il doit afficher le contenu actuel de rm (qui est remplacé par rm -i) et l'affiche à l'écran.

Supprimes ta seconde ligne, et tout marchera correctement.

Écrit par : clarusad 16 Feb 2010, 08:58

ok, je comprends, mais alors comment faire pour que je puisse avoir plusieurs alias de commandes ?
Par exemple je pourrais aussi vouloir ceci en plus :
alias ls='ls -ai'
pour obtenir le ll de Linux. Comment l'ajouter dans ce cas ?

Merci.

Écrit par : guerom00 16 Feb 2010, 10:08

Oui bah tu rajoutes ça :

Citation (clarusad @ 16 Feb 2010, 08:58) *
alias ls='ls -ai'

à la suite dans ton fichier.
Ce qui n'allait pas précédemment c'est que tu voulais définir un alias pour “rm -d” qui est une commande et un argument. On peut pas faire ça. smile.gif

Écrit par : clarusad 16 Feb 2010, 11:05

ok je comprends bien, merci.
En plus que le rm -di est superflu car le terminal me demande une confirmation lors de la destruction d'un répertoire.

Merci à tous pour votre aide : j'ai bien avancé !
(j'ajoute la mention résolu dans le titre du post)

Écrit par : darenzana 16 Feb 2010, 21:48

Citation (clarusad @ 16 Feb 2010, 11:05) *
En plus que le rm -di est superflu car le terminal me demande une confirmation lors de la destruction d'un répertoire.

bin oui, puisque tu as deja un alias rm=rm -i
quand tu tapes 'rm -d', le shell parse ta ligne, voir 'rm', le remplace par 'rm -i', et donc la commande exécutée est 'rm -i -d'
d'ailleurs un petit truc utile, pour mettre à jour ces mécanismes internes:
tapes 'set -x'
une fois ceci fait, le shell t'indiquera chaque ligne tel qu'il la comprend avant de l'exécuter.
pour revenir au comportement original:
set +x

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)