Как я могу поместить $HOME/opt/git/bin в PATH?

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

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

Как указал SirLancelot, вы reset ваш путь, а не увеличиваете его. Вы также использовали одинарные кавычки вместо двойных кавычек, поэтому значение было точно указано в строке, а не содержало расширенное значение $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, например, с каталогом git bin в передней части PATH, оболочки будут искать $HOME/opt/git/bin/ls и не находят его и переходят в другие каталоги в вашем PATH, в конечном итоге найти его в /usr/bin/ls или /bin/ls. Некоторые оболочки кэшируют местоположение, где находится программа; другие нет. Таким образом, имеет смысл хранить /bin и /usr/bin рядом с вашей PATH, чтобы ускорить доступ к стандартным утилитам. Я всегда держу $HOME/bin перед моей ПУТЕЙ; Таким образом, я могу переопределить что-либо с моей собственной версией - и я делаю это для некоторых команд.

Кроме того, на моей основной рабочей машине каталог /usr/local/bin не находится под моим контролем. Поэтому я не верю в это, и я уверен, что это правильно в конце моей ПУТЫ, поэтому античный 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

Ответ 3

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

export PATH=$HOME/opt/git/bin

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

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

Ответ 4

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

Где $HOME указывает?

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