Как я могу поместить $ HOME / opt / git / bin в мою PATH? - PullRequest
14 голосов
/ 15 февраля 2009

Я попытался безуспешно включить в свой ~ / .profile следующее:

export PATH='$HOME/opt/git/bin'

Кажется, это не работает, потому что $ git мне ничего не дает. Я пытаюсь установить Git.

Я также пробовал команды здесь .

Ответы [ 4 ]

19 голосов
/ 15 февраля 2009

Вы хотите быть осторожным с этой командой. переопределит вашу $ PATH.

Возможно, вам потребуется поместить его в ~/.bash_profile и изменить его на:

export PATH="$HOME/opt/git/bin:$PATH"
8 голосов
/ 15 февраля 2009

Как указал SirLancelot, вы сбрасываете свой путь, а не увеличиваете его. Вы также использовали одинарные кавычки вместо двойных кавычек, поэтому в качестве набора значений была указана именно строка, а не расширенное значение $ HOME. Как уже отмечалось, правильное решение для этого заключается в использовании:

export PATH="$PATH:$HOME/opt/git/bin"

Или вы можете отменить заказ:

export PATH="$HOME/opt/git/bin:$PATH"

Однако все, что нужно сделать, это убедиться, что при вводе git исполняемый файл будет найден.

Ваш вопрос также упоминается с использованием $git; вам придется установить эту переменную, возможно, используя:

export git=$(which git)

Сказав это, я не вижу преимущества использования $git, когда git находится в вашем PATH; это один дополнительный символ для ввода (и тоже сдвинутая цифра). Если вы хотите продолжить использовать $git, вам, вероятно, не следует добавлять $HOME/opt/git/bin в PATH. Его присутствие замедляет неудачные поиски команд, и если вы всегда обращаетесь к git через $git (который теперь должен был бы быть установлен с помощью: export git=$HOME/opt/git/bin/git), то нет никакого преимущества в наличии каталога git bin в вашей переменной PATH.


Маси прокомментировал, что порядок не имеет смысла, а Дуглас Лидер ответил:

Порядок не имеет смысла - это порядок [в котором ищут каталоги]. Тем не менее, git не находится ни в одном из ваших других каталогов поиска, и не должно быть никакого совпадения между командами в каталоге git bin и любыми другими, так что порядок не будет иметь никакого значения в этом случае .

Это в основном точно, но я немного раскручиваю. При поиске команды система ищет программу, ища ее в каждом каталоге в PATH, пока не найдет ее. Таким образом, когда он ищет ls, например, с каталогом bin git в начале PATH, оболочки будут искать $HOME/opt/git/bin/ls и не находят его, и передают другим каталогам в вашем PATH, в конечном итоге найти его в /usr/bin/ls или /bin/ls. Некоторые оболочки кэшируют место, где находится программа; другие нет. Таким образом, имеет смысл держать /bin и /usr/bin рядом с передней частью вашей переменной PATH, чтобы ускорить доступ к стандартным утилитам. Я всегда держу $HOME/bin перед моей ПУТЬ; таким образом, я могу переопределить что угодно с моей собственной версией - и я делаю это для некоторых команд.

Кроме того, на моей основной рабочей машине каталог /usr/local/bin не находится под моим контролем. Поэтому я не доверяю этому, и я удостоверяюсь, что это верно в конце моего PATH, поэтому, например, античный GCC в нем не тот, который я использую. [ Ммм; они обновили его до 3.4.6; раньше было 2,95 или около того; Тем не менее, я использую 4.3.3. ]

Еще одно предложение для вас. Подумайте о создании символической ссылки в вашем $HOME/bin (при условии, что она у вас есть и она находится в вашей переменной PATH), которая указывает на место установки git. Это означает, что вы не добавляете дополнительный каталог в PATH (так что все работает незначительно быстрее), но вы действительно используете версию git, которую вы решите использовать.

ln -s $HOME/opt/git/bin/git $HOME/bin/git
2 голосов
/ 15 февраля 2009

Вам нужно удалить '', попробуйте это

export PATH=$HOME/opt/git/bin

А чтобы не переписывать весь свой путь, попробуйте это:

export PATH=$PATH:$HOME/opt/git/bin
1 голос
/ 15 февраля 2009

Это должно было сработать.

На что указывает $ HOME?

Убедитесь, что $ HOME / opt / git / bin действительно содержит исполняемый файл с именем git.

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