bash / cygwin / $ PATH: мне действительно нужно перезагрузить компьютер, чтобы изменить $ PATH? - PullRequest
5 голосов
/ 14 июля 2009

Я хотел использовать Python, установленный под Cygwin, а не тот, который установлен под WinXP напрямую, поэтому я отредактировал ~ / .bashrc и получил его. Ничего не изменилось. Я пробовал другие вещи, но ничего, что я сделал, никак не изменило $ PATH. Итак, я перезагрузился. Ага; теперь $ PATH изменился на то, что я хотел.

Но кто-нибудь может объяснить, ПОЧЕМУ это произошло? Когда изменения в среде (и ее переменных), сделанные через cygwin (и bash), вступают в силу только после перезагрузки?

(Это какой-нибудь способ управлять железной дорогой?) (Этот вопрос вряд ли выиграет какие-либо очки, но мне любопытно, и я также устал от просмотра документов, которые не помогают в этом вопросе.)

Ответы [ 4 ]

3 голосов
/ 14 июля 2009

Попробуйте:

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

Или:

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

в кавычках сохраняются пробелы и символы новой строки, которые не содержатся в именах каталогов. Я повторяю "не" .

Если вы хотите изменить путь для текущей среды и любых последующих процессов, используйте что-то похожее на любую из приведенных выше команд; они эквивалентны.

Если вы хотите изменить путь при следующем запуске Bash, отредактируйте ~/.bashrc и добавьте один из вышеперечисленных (например) или отредактируйте существующую команду установки PATH, которую вы там найдете.

Если вы хотите повлиять как на текущую среду, так и на любую последующую (т.е. иметь непосредственный и «постоянный» эффект), отредактируйте ~/.bashrc и выполните одно из следующих действий: введите одну из первых двух форм, показанных выше или исходный файл ~/.bashrc. Иногда вы можете не захотеть делать поиск, если, например, он отменит какую-то временную вещь, которую вы используете в данный момент, например, если другие переменные будут установлены иначе, чем ~/.bashrc установит (сбросит) их.

Я не думаю, что вам нужно беспокоиться о хэше, если вы не делаете серьезную перестановку или, возможно, не добавляете некоторые локальные замены для системных утилит.

2 голосов
/ 14 июля 2009

Если вы хотите, чтобы ваши изменения были постоянными, вы должны изменить соответствующий файл (в данном случае .bashrc) и выполнить ОДИН из следующих действий:

  • Перезапустить окно cygwin
  • source .bashrc (Это должно работать, даже если у вас не работает)
  • . .bashrc (то есть точка )

Однако .bashrc используется по умолчанию при использовании оболочки BASH, поэтому, если вы используете другую оболочку (csh, ksh, zsh и т. Д.), Ваши изменения не будут отражены путем изменения .bashrc.

1 голос
/ 14 июля 2009

Несколько вещей, чтобы попытаться исключить, по крайней мере:

  1. Вы получаете то же поведение, что и следующие из оболочки? (Вставлено из моего Cygwin, который работает, как ожидалось.)

    $ 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. Ваш bashrc устанавливает PATH способом, аналогичным описанному выше? (то есть вторая команда).

  3. Содержит ли ваш bashrc "источник" или "." командовать где-нибудь? (Возможно, он ищет другой файл, который перезаписывает вашу переменную PATH.)

0 голосов
/ 14 июля 2009

Возможно, вам потребуется повторно инициализировать хэши bash после изменения переменной пути:

hash -r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...