Git Bash не видит мой путь

107

Когда я использую Git Bash (в Windows), я не могу запустить исполняемый файл, не указав его полный путь, хотя он находится в папке, которая находится в моей переменной PATH. Похоже, bash его не распознает. Зачем? Могу я это исправить?

улу
источник
1
Можете ли вы показать, что именно находится в вашей переменной PATH?
чороба
Хм, как это связано с моим вопросом? Если вы подозреваете, что он искажен, я уверен, что это не так, поскольку я могу запускать те же исполняемые файлы, используя обычную оболочку Windows (cmd).
ulu
@ulu: это связано с вашим вопросом, потому что переменная PATH определяет, какие исполняемые файлы можно найти ... Как выглядит переменная PATH из оболочки Bash?
jalf
В частности, где-то ближе к концу он содержит / e / Programs / Tools / bin, это путь, который меня интересует. Может проблема в том, что я пытаюсь запустить bat-файл?
ulu

Ответы:

64

Понял. Как пользователь Windows, я привык вводить имена исполняемых файлов без расширений. В моем случае я хотел запустить файл с именем cup.bat. В оболочке Windows набора текста cupбудет достаточно. Bash так не работает, ему нужно полное имя. Набор текста cup.batрешил проблему. (Мне не удалось запустить файл, поскольку, очевидно, bash не мог понять его содержимое)

Еще одна причина перейти на posh-git ..

Спасибо @Tom за то, что указал мне правильное направление.

улу
источник
5
Вы также можете использовать псевдоним, чтобы сократить имя:alias cup=cup.bat
Виталий Деттлинг
Windows использует PATH и PATH_EXTENSIONS для разрешения исполняемых файлов, в то время как мир Linux использует только PATH
Ferrybig
Ваш сценарий оболочки определенно не должен называться .bat; расширение подразумевает пакетный сценарий Windows, особенно на машине Windows.
тройняшек
Что решает posh-git? Вам больше не нужно вводить расширение?
Qwerty,
@Qwerty posh - это консоль Powershell, переход на нее означает более удобную для Windows консоль со всеми знакомыми командами и ярлыками. И да, как и на любой консоли Windows, вам не нужно вводить ".exe" или ".bat"
ulu
53

Возможно, bash не видит ваш путь к Windows. Введите env|grep PATHbash, чтобы подтвердить, какой путь он видит.

Том
источник
1
В нем говорится: PATH = / c / Users / ulu / bin:.: / Usr / local / bin: / mingw / bin: / bin: / e / Programs / Ruby / bin: / c / P rogram Files / Common Files / Microsoft Shared / Windows Live: / c / Program Files (x86) / C ommon Files / Microsoft Shared / Windows Live: / c / Windows / system32: / c / Windows: / c / Wind ows / System32 / Wbem: / c / Windows / System32 / WindowsPowerShell / v1.0 /: / e / Program Files (x86) / Microsoft SQL Server / 90 / Tools / binn /
ulu
2
Попробуйте запустить "which your_batch_file.bat" (без кавычек). Он должен вернуть местоположение вашего командного файла, если он действительно находится в пути.
Tom
15
как добавить пути для просмотра git-bash?
Ангел С. Морено
14
@ AngelS.Moreno обновите или создайте файл ".bashrc" в своем домашнем каталоге (например, "vim ~ / .bashrc" в git bash / cygwin), затем добавьте "PATH = $ PATH: <your_path_1>: <your_path_2>:. ..: <your_path_n> "к этому файлу. Итак, если вы хотите, чтобы «/ usr / bin / mypath» находился в переменной PATH, эта строка будет выглядеть так: PATH = $ PATH: / usr / bin / mypath
Даниэль
35

После комментария @ Daniel и благодаря ответу @ Tom я обнаружил, что Git bash действительно использует PATH, но не последние пути, которые я недавно установил. Чтобы обойти эту проблему, я добавил в свой домашний каталог (Windows) файл с именем:

.bashrc

и следующее содержание:

PATH=$PATH:/c/Go/bin

потому что я устанавливал Go, и этот путь содержал исполняемый файл. go.exe Теперь Git bash смог распознать команду:

go

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

Микаэль Майер
источник
А чтобы добавить несколько путей?
Никифорос
PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer
Что вы имеете в виду, домашний каталог Windows? пожалуйста уточни.
Миан Асбат Ахмад
c:/Users/[myusername]/это мой домашний каталог
Микаэль Майер
9

Во время установки Git вы можете выбрать опцию, показанную ниже, это поможет вам установить путь автоматически.

Мастер установки Git

У меня получилось :)

Мутамижчелван. V
источник
1
@eranotzap переустановить Git с альтернативным вариантом? :)
Бретт Райан
1
@eranotzap Настройте переменную Environemtal, либо переустановите Git
Muthamizhchelvan. V
Как это помогает заставить git bash использовать путь, если в результате git bash даже не будет установлен?
Жюль
@Jules Нет, при установке Git Bash он запросит у вас параметры, как показано на скриншоте, там вы можете выбрать любой запрос в соответствии с вашими потребностями, git bash будет установлен с опцией выбора.
Мутамижчелван. V
9

Создайте файл в C: \ Users \ USERNAME с именем config.bashrc, содержащий:

PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space

Теперь переместите файл в командной строке в правильное место:

mv config.bashrc .bashrc
Smile4ever
источник
4

Старый вопрос, но он может помочь кому-то другому.

Я изменил свой пользовательский PATH, после этого я просто вышел из системы и снова зашел в систему.

Это все! git bashправильно загрузил новое значение PATH.

Фернандосавио
источник
Возможно ли это, не закрывая git баас или не выйдя из системы. Я имею в виду, что хочу установить переменную пути, и я могу использовать ее в текущем git bash
KCS
Может быть , вы могли бы сделать: export PATH=$NEW_PATH:$PATH. И делать все нормально
Фернандосавио
3

Перезагрузите компьютер после добавления нового значения в PATH.

Павел
источник
2
Перезагрузка компьютера не требуется, это необходимо для терминального сеанса.
christianbundy
2
@christianbundy Я не уверен, но похоже, что когда-то перезапуск терминала не помог, но перезагрузка компьютера помогла, поэтому я написал этот ответ. Терминал перезагрузки - это первое, что я пробую.
Павел
Такой простой ответ и совершенно эффективный.
bobanahalf
2

Я могу подтвердить, что перезапуск системы гарантирует, что PATH, установленный в переменной среды в Windows, будет выбран git, и другого автоматического способа нет.

Прамод Алагамбхат
источник
перезапуска терминала достаточно, чтобы выбрать новый путь
Викас Тавния,
1

Похоже, основная причина здесь в том, что Git Bash не всегда может правильно анализировать переменную% USERPROFILE%. Вместо того, чтобы делать его относительно C: \ Users \\, он получает значение C: \ Windows \ System 32 \ systemprofile \ После изменения этого адреса на полностью квалифицированный адрес он работает, и даже если я верну его позже, Git Bash все равно по какой-то причине имеет правильный путь.

ЯкобN
источник
1

В Windows 10 просто удалите git и установите его снова. Он автоматически установит для вас переменную среды. Я по ошибке удалил переменную окружения и не смог использовать git в своей IDE. Переустановка git устранила эту проблему.

ромин21
источник
1

В случае , если ваш git-bash«ы PATHподарки , но не последнее , и вы не хотите перезагрузки , но регенерировать свои PATHс, вы можете попробовать закрыть все cmd.exe, powershell.exeи git-bash.exeи открыть одно окно cmd.exe из меню Пуск или на рабочем столе и посмотреть , если PATHокр обновляется . Если вы изменили общесистемные настройки, PATHвам также необходимо открыть одно привилегированное окно cmd.

Примечание: это не работает со всеми версиями Windows, и открывать в cmd.exeлюбом месте, кроме меню «Пуск» или рабочего стола, может не работать , проверено на моих 3 компьютерах, и 2 из них работают. Я не понял, почему это работает, но поскольку PATHпеременная среды генерируется автоматически при входе в систему и выходе из системы, я бы не испортил эту переменную конкатенацией переменных.

ЖВТ
источник
0

Для меня наиболее удобным было: 1) Создать каталог «bin» в корне диска C: 2) Добавить «C: / bin;» в ПУТЬ в "Мой компьютер -> Свойства -> Переменные Environemtal"

Майк Дж.
источник
0

Я сталкиваюсь с этой проблемой, когда пытаюсь использовать mingw для компиляции библиотеки xgboost в Win10. Наконец я нашел решение.

Создайте файл с именем .bashrc в своем домашнем каталоге (обычно это C: \ Users \ username). Затем добавьте к нему путь. Не забудьте использовать кавычки, если ваш путь содержит пустой, и не забудьте использовать / c / вместо C: /

Например:

ПУТЬ = $ ПУТЬ: "/ c / Program Files / mingw-w64 / x86_64-7.2.0-posix-seh-rt_v5-rev1 / mingw64 / bin"

Фламинго
источник
0

Я столкнулся с глупой ошибкой с моей стороны. У меня был системный и пользовательский путь, установленный для моей рабочей области golang на моем компьютере с Windows 10. Когда я удалил избыточный путь к системным переменным и вышел из системы и снова включился, я смог вызвать файлы .exe в bash и успешно вызвать go env.

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

NewbieCrit
источник
0

Я знаю, что это старый вопрос, но есть два типа переменных среды. Тот, который принадлежит пользователю, и один для всей системы. В зависимости от того, как вы открываете git bash (с правами пользователя или с правами администратора), используемая переменная среды PATH может быть из ваших пользовательских переменных или из системных переменных. Увидеть ниже: введите описание изображения здесь

как сказано в предыдущем ответе, проверьте с помощью команды, env|grep PATHкакую из них вы используете, и соответствующим образом обновите свою переменную. Кстати, перезагружать систему не нужно. Просто закройте и снова откройте git bash

LionH
источник
0

В моем случае это произошло при установке heroku cli и git bash. Вот что я сделал для работы.

добрался до этого места

C:\Users\<username here>\AppData\Local

и удалите файл в моем случае папку heroku. Поэтому я удалил папку и запустил cmd. Это работает

конташи35
источник
-1

Не избегайте специальных символов (\) при редактировании / добавлении в вашу переменную $ PATH. Например, каталог приложения в программных файлах будет выглядеть так: PATH=$PATH:/c/Program Files (x86)/random/application

Не делайте этого:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Надеюсь это поможет.

Адам Парсонс
источник
PATH=$PATH:/c/Program Files (x86)/random/application... это неправильный синтаксис bash для установки PATH. Это временно добавит каталог /c/Programк пути, а затем попытается запустить программу Filesс аргументами (x86)/random/application. Единственное, что не так с вашим примером «не делайте этого», это то, что он имеет двойные обратные косые черты для скобок, когда одинарные обратные косые черты верны.
Жюль
-2

Для тех из вас, кто пробовал все вышеупомянутые методы, включая систему Windows env. переменные, .bashrc, .bashprofile и т. д. И могу увидеть правильный путь в 'echo $ PATH' ... Возможно, у меня есть решение для вас.

подавить ошибки, используя exec 2> / dev / null

Мой скрипт работает нормально, но выдает ошибки «команда не найдена» или «каталог не найден», хотя, насколько я могу судить, пути были пустыми. Итак, если вы подавите эти ошибки (возможно, придется добавить «set + e»), то все будет работать правильно.

ClickerTweeker
источник
1
Кажется, это просто игнорирование ошибок, а не устранение основной причины проблемы.
nmio
-3

Создайте пользовательскую переменную с именем Path и добавьте в качестве значения% Path%, из того, что я заметил, Git Bash видит только пользовательские переменные, а не системные переменные. Выполнив указанную процедуру, вы предоставите свою системную переменную в пользовательских переменных.

бройлогабриель
источник
-3

В переменных среды пути Windows 7 я просто добавляю в конец пути к системной переменной

\; C: \ Program Files \ Git \ bin

и теперь это работает!

Кеннет Исраэль
источник