2009-07-14 8 views
5

Je voulais utiliser le Python installé sous cygwin plutôt que celui installé directement sous WinXP, donc j'ai édité ~/.bashrc et je l'ai utilisé. Rien n'a changé. J'ai essayé d'autres choses, mais rien de ce que j'ai fait n'a changé $ PATH. J'ai donc redémarré. Aha; maintenant $ PATH a changé pour ce que je voulais.

Mais, quelqu'un peut-il expliquer pourquoi c'est arrivé? Quand les modifications de l'environnement (et de ses variables) effectuées via cygwin (et bash) ne prennent effet qu'après un redémarrage?

(Est-ce une façon de gérer un chemin de fer?) (Cette question est peu susceptible de gagner des points, mais je suis curieux, et je suis aussi fatigué de patauger docs qui n'aident pas sur ce point.)

+0

Quelle commande exacte avez-vous utilisée pour modifier $ PATH? –

+0

J'ai essayé plusieurs façons. Sous la direction ~/.bashrc: PYTHON =/usr/bin/python.exe au lieu de/cygdrive/c/Python/etc/etc PATH = $ {} PYTHON: $ {PATH} puis% Source ./ bashrc Lorsque cela ne fonctionnait pas, j'ai essayé de modifier $ {PAth} à partir de la cmdline, en l'effaçant et en le reconstruisant: pas d'effet. – behindthefall

Répondre

0

Vous devrez peut-être réinitialiser les hash de bash après avoir modifié la variable de chemin:

hash -r 
+0

les hachages de bash? Hmmm. Souvenirs de 'rehash' sur un Sun 3. IIRC. Mais je pensais que 'source .bashrc' s'en occupait, non? – behindthefall

+1

rehash est tcsh. hash -r est pour bash –

3

Essayez:

PATH="${PATH}:${PYTHON}"; export PATH 

Ou:

export PATH="${PATH}:${PYTHON}" 

les citations préserver les espaces et les sauts de ligne que vous ne le font pas ont dans vos noms de répertoire. Je répète "ne pas".

Si vous souhaitez modifier le chemin de l'environnement actuel et de tous les processus suivants, utilisez quelque chose de similaire à l'une des commandes ci-dessus; ils sont équivalents.

Si vous souhaitez modifier le chemin pour la prochaine fois que vous démarrez Bash, éditez ~/.bashrc et ajoutez l'un des éléments ci-dessus (par exemple) ou modifiez la commande de réglage PATH existante que vous y trouvez.

Si vous souhaitez affecter à la fois l'environnement actuel et tous les suivantes (c.-à-ont un effet immédiat et un « permanent » affecte), modifier ~/.bashrc et effectuez l'une des opérations suivantes: tapez l'une des deux premières formes indiquées ci-dessus ou source le fichier ~/.bashrc. Parfois, vous ne voudrez peut-être pas faire le sourcing si, par exemple, cela annulerait une chose temporaire que vous utilisez actuellement comme si d'autres variables étaient définies différemment que ~/.bashrc les définirait (réinitialiser).

Je ne pense pas que vous ayez besoin de vous inquiéter de hash, sauf si vous faites un réarrangement sérieux ou si vous ajoutez des remplacements locaux pour les utilitaires système.

+0

Eh bien, si j'avais besoin de plus de preuve, cela montre à quel point je suis mal à l'aise avec bash. Qu'est-ce que je dois faire? source, hachage ET exporter tout le temps dans cet ordre? – behindthefall

+0

Vous m'avez perdu. Je dois préserver les espaces qui ne sont pas là? Ou est-ce que vous dites: "Suivez les conventions de nommage * NIX"? (Ce que je fais toujours, j'ai une horreur des espaces dans les noms de systèmes de fichiers --- je n'aime même pas les tirets.) – behindthefall

+0

Sur mon système cygwin, pour modifier $ PATH dans la session shell actuelle, je devais effectuer la seconde forme de la commande. Donc, si vous ajoutez le 'export PATH =" $ {PATH}: {$ PYTHON} "' à votre .bashrc, il devrait fonctionner à chaque fois que vous vous connectez. –

2

Si vous souhaitez que vos modifications soient permanentes, vous devez modifier le fichier approprié (.bashrc dans ce cas) et effectuez l'une des actions suivantes:

  • Redémarrer la fenêtre Cygwin
  • la source .bashrc (Cela devrait fonctionner, même si cela ne fonctionne pas pour vous)
  • . Bashrc (qui est dot <espace> < nom de fichier >)

Cependant,.bashrc est utilisé par défaut lors de l'utilisation d'un shell BASH, donc si vous utilisez un autre shell (csh, ksh, zsh, etc), vos modifications ne seront pas reflétées en modifiant .bashrc.

+1

Ce qui précède, notant que ".bashrc" est un raccourci de bash pour "source .bashrc" –

1

Un couple de choses à essayer et règle au moins:

  1. Avez-vous le même comportement que les éléments suivants de la coquille? (Pasted de mon Cygwin, qui fonctionne comme prévu.)

     
    $ echo $PATH 
    /usr/local/bin:/usr/bin:/bin 
    
    $ export PATH=$PATH:/cygdrive/c/python/bin 
    
    $ echo $PATH 
    /usr/local/bin:/usr/bin:/bin:/cygdrive/c/python/bin 
    
  2. est votre bashrc le chemin défini d'une manière similaire à ce qui précède? (c'est-à-dire la deuxième commande).

  3. Votre bashrc contient-il une "source" ou un "." commande n'importe où? (Peut-être que cela génère un autre fichier qui écrase votre variable PATH.)

+0

Bonjour à nouveau, ars. J'ai fini pour la nuit, mais j'essaierai encore demain. Merci. – behindthefall