Когда я использую Git Bash (в Windows), я не могу запустить исполняемый файл, не указав его полный путь, хотя он находится в папке, которая находится в моей переменной PATH. Похоже, bash его не распознает. Зачем? Могу я это исправить?
Когда я использую Git Bash (в Windows), я не могу запустить исполняемый файл, не указав его полный путь, хотя он находится в папке, которая находится в моей переменной PATH. Похоже, bash его не распознает. Зачем? Могу я это исправить?
Ответы:
Понял. Как пользователь Windows, я привык вводить имена исполняемых файлов без расширений. В моем случае я хотел запустить файл с именем cup.bat
. В оболочке Windows набора текста cup
будет достаточно. Bash так не работает, ему нужно полное имя. Набор текста cup.bat
решил проблему. (Мне не удалось запустить файл, поскольку, очевидно, bash не мог понять его содержимое)
Еще одна причина перейти на posh-git ..
Спасибо @Tom за то, что указал мне правильное направление.
alias cup=cup.bat
.bat
; расширение подразумевает пакетный сценарий Windows, особенно на машине Windows.
Возможно, bash не видит ваш путь к Windows. Введите env|grep PATH
bash, чтобы подтвердить, какой путь он видит.
После комментария @ 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
c:/Users/[myusername]/
это мой домашний каталог
Во время установки Git вы можете выбрать опцию, показанную ниже, это поможет вам установить путь автоматически.
У меня получилось :)
Создайте файл в C: \ Users \ USERNAME с именем config.bashrc, содержащий:
PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space
Теперь переместите файл в командной строке в правильное место:
mv config.bashrc .bashrc
Старый вопрос, но он может помочь кому-то другому.
Я изменил свой пользовательский PATH, после этого я просто вышел из системы и снова зашел в систему.
Это все! git bash
правильно загрузил новое значение PATH.
export PATH=$NEW_PATH:$PATH
. И делать все нормально
Перезагрузите компьютер после добавления нового значения в PATH.
Я могу подтвердить, что перезапуск системы гарантирует, что PATH, установленный в переменной среды в Windows, будет выбран git, и другого автоматического способа нет.
Похоже, основная причина здесь в том, что Git Bash не всегда может правильно анализировать переменную% USERPROFILE%. Вместо того, чтобы делать его относительно C: \ Users \\, он получает значение C: \ Windows \ System 32 \ systemprofile \ После изменения этого адреса на полностью квалифицированный адрес он работает, и даже если я верну его позже, Git Bash все равно по какой-то причине имеет правильный путь.
В случае , если ваш git-bash
«ы PATH
подарки , но не последнее , и вы не хотите перезагрузки , но регенерировать свои PATH
с, вы можете попробовать закрыть все cmd.exe
, powershell.exe
и git-bash.exe
и открыть одно окно cmd.exe из меню Пуск или на рабочем столе и посмотреть , если PATH
окр обновляется . Если вы изменили общесистемные настройки, PATH
вам также необходимо открыть одно привилегированное окно cmd.
Примечание: это не работает со всеми версиями Windows, и открывать в cmd.exe
любом месте, кроме меню «Пуск» или рабочего стола, может не работать , проверено на моих 3 компьютерах, и 2 из них работают. Я не понял, почему это работает, но поскольку PATH
переменная среды генерируется автоматически при входе в систему и выходе из системы, я бы не испортил эту переменную конкатенацией переменных.
Я сталкиваюсь с этой проблемой, когда пытаюсь использовать 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"
Я столкнулся с глупой ошибкой с моей стороны. У меня был системный и пользовательский путь, установленный для моей рабочей области golang на моем компьютере с Windows 10. Когда я удалил избыточный путь к системным переменным и вышел из системы и снова включился, я смог вызвать файлы .exe в bash и успешно вызвать go env.
Хотя на OP был дан ответ, это еще одна проблема, которая может помешать bash видеть ваши пути. Я только что снова протестировал bash с этой проблемой, и, похоже, это дает какой-то конфликт, который блокирует bash от следования по любому из путей.
Я знаю, что это старый вопрос, но есть два типа переменных среды. Тот, который принадлежит пользователю, и один для всей системы. В зависимости от того, как вы открываете git bash (с правами пользователя или с правами администратора), используемая переменная среды PATH может быть из ваших пользовательских переменных или из системных переменных. Увидеть ниже:
как сказано в предыдущем ответе, проверьте с помощью команды, env|grep PATH
какую из них вы используете, и соответствующим образом обновите свою переменную. Кстати, перезагружать систему не нужно. Просто закройте и снова откройте git bash
Не избегайте специальных символов (\) при редактировании / добавлении в вашу переменную $ 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
. Единственное, что не так с вашим примером «не делайте этого», это то, что он имеет двойные обратные косые черты для скобок, когда одинарные обратные косые черты верны.
Для тех из вас, кто пробовал все вышеупомянутые методы, включая систему Windows env. переменные, .bashrc, .bashprofile и т. д. И могу увидеть правильный путь в 'echo $ PATH' ... Возможно, у меня есть решение для вас.
подавить ошибки, используя exec 2> / dev / null
Мой скрипт работает нормально, но выдает ошибки «команда не найдена» или «каталог не найден», хотя, насколько я могу судить, пути были пустыми. Итак, если вы подавите эти ошибки (возможно, придется добавить «set + e»), то все будет работать правильно.
Создайте пользовательскую переменную с именем Path и добавьте в качестве значения% Path%, из того, что я заметил, Git Bash видит только пользовательские переменные, а не системные переменные. Выполнив указанную процедуру, вы предоставите свою системную переменную в пользовательских переменных.
В переменных среды пути Windows 7 я просто добавляю в конец пути к системной переменной
\; C: \ Program Files \ Git \ bin
и теперь это работает!