Из вашего скриншота я делаю вывод, что вы используете Cygwin. Поэтому, пожалуйста, добавьте тег cygwin к вашему вопросу.
Как видно из сообщения об ошибке, команда dirname
не найдена bash, поэтому при условии, что ваш Cygwin установка не нарушена, я предполагаю, что PATH установлен неправильно; в вашей настройке dirname.exe должен быть в C: / cygwin64 / bin (проверьте это).
Использование bash .exe немного необычно, поскольку вы запускаете его непосредственно из Windows cmd подскажите. Более распространенный способ - использовать его из «Терминала Cygwin», на который вы создали ссылку Windows, при установке Cygwin, или использовать другую подходящую программу «Терминал»; Я использую, например, Mintty для этой задачи (также доступна через установщик Cygwin).
Сказав это, можно можно запустить bash .exe, как вы делать это, но вы должны убедиться, что по крайней мере PATH настроен правильно. Одна из возможностей сделать это - добавить C: \ cygwin64 \ bin в Windows PATH, но у этого есть недостаток: некоторые команды имеют одинаковое имя в мире Windows и в Cygwin, хотя они и служат совершенно другая цель, и это рано или поздно укусит вас. Другая проблема заключается в том, что в какой-то момент вы будете полагаться на другие bash специфицированные c настройки, кроме PATH.
Лучший способ выполнить sh Ваша цель - IMO, чтобы гарантировать, что система в целом Файлы bash -initialization поставляются с bash. Если мне нужно запустить скрипт из командной строки Windows cmd, я бы запустил его с помощью
C:\cygwin64\bin\bash.exe --login YOURSCRIPT
Это прочитает файл (в вашей настройке) C:\cygwin64\etc\profile
перед запуском YOURSCRIPT, так что вы можете проверить , что PATH правильно установлен там, посмотрев на этот файл. При установке по умолчанию это должно быть так.
После прочтения этого файла он попытается прочитать файл .bash_profile
в вашем каталоге Cygwin HOME, поэтому, если вам нужны дополнительные настройки для (неинтерактивных) bash -скриптов, создайте этот файл и поместите свои настройки там.