it-swarm.xyz

Как выполнить файл .sh в Windows?

Когда я пытаюсь выполнить файл (name.sh) в командной строке с помощью команды ./name.sh, я получаю сообщение об ошибке:

"" не распознается как внутренняя или внешняя команда, рабочий или пакетный файл

пожалуйста, помогите мне выполнить файл .sh

61
sushant

Вы находитесь на Windows CMD.EXE (из сообщения об ошибке). Он использует другой синтаксис для выполнения команд. Вам нужно будет использовать sh name.sh, если у вас установлен Cygwin или аналогичный.

Для пояснения, в Windows нет встроенной утилиты для поддержки файлов .sh. Для запуска вам необходимо установить сторонний инструмент, такой как Cygwin .

70
Roger Lipscombe

Вы пытаетесь запустить команду Linux в командной строке Windows.

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

Поэтому Windows считает, что вы пытаетесь запустить команду с именем «.» и синтаксический анализ аргумента "/name.sh". Правильное соглашение будет ".\Name.sh". Кроме того, Windows автоматически выполнит поиск вашей команды в текущем каталоге, чтобы вы могли просто ввести «name.sh».

Следующая проблема, с которой вы столкнетесь, заключается в том, что Windows не знает, что такое sh-скрипт, опять же, это Linux. Вы можете решить эту проблему, установив Cygwin, если вы действительно хотите или вам нужно запустить скрипт sh.

Однако, судя по одному из ваших предыдущих комментариев, вы также можете переименовать скрипт в name.bat и удалить строку «#!/Bin/sh». Теперь у вас есть пакетный файл, который Windows должна понимать. Вы можете прочитать больше о пакетных файлах здесь .

13
Martin Fido

В качестве альтернативы вы можете перейти на темную сторону и установить Linux. Из подсказки:

sh runide.sh

или же

Sudo sh runide.sh

Ваша программа будет работать, и у вас будет лучшая система.

10
steve

Вы пытаетесь заправить свою машину апельсиновым соком вместо бензина. Windows совместно использует аналогичные команды, хранящиеся в файлах .bat или .cmd, со сценариями Unix/Linux/zOS Unix Subsystem/* ix Shell, поскольку эти два семейства операционных систем имеют общего предка машин DEC PDP-x.

Если вы хотите получить мгновенное вознаграждение, вам необходимо установить среду, в которой есть программа «sh.exe» или «csh.exe» или «bash.exe» (кто-нибудь из tsh.exe?)

В качестве альтернативы, если вы хорошо знаете команды сценариев Unix и хорошо знаете команды Windows .cmd и .bat file, вы можете преобразовать файл .sh в файл .bat или .cmd. Тем не менее, вы часто будете встречать больше Unix-стилевых программ, не имеющих аналогов в Windows - grep, sed, vi, emacs и т.д. Таким образом, вызов для установки CygWin (без минимализма) - просто для получения Shell и Unix инструменты. Поместите его на флешку для этих особых случаев.

5
J.M.

Кто-то сказал что-то о MS-DOS, используя / для команд и \ для путей. Это немного вводит в заблуждение. Посмотрите на мой пример:

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

Не имеет разницы в действии. Да, это не так для всех операций - фактический ответ просто Нет , или без Cygwin или SSHD вы не можете.

Я знаю только потому, что тупо потратил полдня, пытаясь выяснить, что if then fi и eval, exec делают с -Djava.something при вызове.

3
grizzleybear123

Лучшее решение на мой взгляд:

  • Загрузите и установите .git для Windows

  • Щелкните правой кнопкой мыши на рабочем столе и скажите «git bash here»

  • Выполните ваш скрипт, как в Unix

  • Готово!

Осторожно: многие команды не работают на Windows! Но все же многие основные вещи будут работать.

Если вам нужен этот скрипт регулярно, вы можете создать ярлык (например, на рабочем столе):

  • Создать ярлык для mintty.exe на рабочем столе

  • Изменить свойства ярлыка и изменить цель (сохранить путь):

  • C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

3
Heanz

Используйте Github для Windows. Он содержит все исполняемые файлы среды Unix.

https://github-windows.s3.amazonaws.com/GitHubSetup.exe

2
Nederealm

Это старая тема, но для тех, кто работает под управлением Windows 10. Просто откройте функции Windows на панели управления «Включение или отключение функций Windows»

Выберите функцию «Подсистема Windows для Linux». После установки у вас есть «Bash», и вы даже можете настроить собственные серверы Linux в Bash. И конечно, команда sh в bash тоже работает.

1
Egbert

Для полноты я хочу упомянуть новую функцию «Подсистема Windows для Linux» для Windows 10. Подробности описаны в http://www.howtogeek.com/249966/how-to-install-and-use-the- linux-bash-Shell-on-windows-10/

Обратите внимание, что для этого необходимо активировать переключатель «Режим разработчика» и включить опцию «Подсистема Windows для Linux (бета-версия)».

Для себя я обнаружил, что установки Git для Windows (которую я использую в любом случае) достаточно.

1
Michael Freidgeim

Я нашел другое и простое решение под названием UnixUtil .

Загрузите и разархивируйте его на диск C :. Установите переменную среды path, чтобы включить C:\UnixUtils\usr\local\wbin.

Это важно. НЕ устанавливайте путь к C:\UnixUtils\bin

1
prabhanjan deshpande

Запустить скрипт Shell из окон. Сначала используйте команду: dos2unix, затем вы можете использовать обычную команду: sh runide.sh

Это сработает.

0
Sridhar GV

хорошо, в этом есть ОЧЕНЬ много неправильного - удалите #!/bin/sh и измените расширение на bat, и это может сработать еще с несколькими исправлениями. Затем вы можете просто вызвать его по имени файла.

Синтаксис сценария оболочки Unix и командного файла Windows не слишком похожи. Cygwin, или куча возни с unxutils может сделать что-то, что будет работать в обоих случаях, но если вы АБСОЛЮТНО не уверены, что среда всегда одинакова, головная боль не стоит

0
Journeyman Geek

Если у вас дома (или на работе) установлен Linux и он подключен к той же сети, и эта сеть безопасна, это может помочь:

  1. Создать общий доступ к папкам в Windows (довольно просто, но убедитесь, что сеть защищена от вторжений).
  2. Смонтируйте его в Linux с помощью mount //WinMachine/Share LinuxFolder (IIRC и требует Samba ).
  3. Используя что-то вроде PuTTY , войдите в систему удаленно в эту коробку Linux.
  4. Запустите вашу команду в смонтированной папке.
0
Camilo Martin

Возможно, проблема действительно в файле name.sh - вы пытаетесь использовать команду ., но она пытается запустить своего рода Shell (например, csh, я думаю), в котором эта команда недопустима.

Итак: name.sh начинается с правильного #!/bin/sh (если вы на самом деле пытаетесь запустить sh)?

0
Andrew Jaffe

Хотя существующие здесь ответы были правильными в то время, Windows 10 делает теперь опционально включает модифицированную версию Ubuntu с полной оболочкой bash .

После того, как скрипты станут исполняемыми, они могут запускаться обычным способом изнутри bash, например:

chmod +x myscript.sh
./myscript.sh

Если вы хотите запустить скрипт прямо из Windows, вы можете создать ярлык в том же каталоге и установить для «Target» что-то вроде:

C:\Windows\System32\bash.exe -c "./myscript.sh"

Если путь вашего скрипта относительно местоположения ярлыка (как в примере выше), убедитесь, что поле «Начать с» также пустое.

0
Molomby