Ответы:
Вы находитесь на Windows CMD.EXE (из сообщения об ошибке). Он использует другой синтаксис для выполнения команд. Вам нужно будет использовать sh name.sh
, предполагая, что у вас установлен Cygwin или аналогичный.
Для пояснения, в Windows нет встроенной утилиты для поддержки файлов .sh. Чтобы запустить такой, вам нужно установить сторонний инструмент, такой как Cygwin .
Вы пытаетесь запустить команду Linux в командной строке Windows.
В Linux косая черта является разделителем пути. В Windows обратная косая черта является разделителем пути, а прямая косая черта обычно указывает на аргумент.
Поэтому Windows считает, что вы пытаетесь запустить команду с именем «.» и синтаксический анализ аргумента "/name.sh". Правильное соглашение будет ". \ Name.sh". Кроме того, Windows автоматически выполнит поиск вашей команды в текущем каталоге, чтобы вы могли просто ввести «name.sh».
Следующая проблема, с которой вы столкнетесь, заключается в том, что Windows не знает, что такое sh-скрипт, опять же, это Linux. Вы можете решить эту проблему, установив Cygwin, если вы действительно хотите или вам нужно запустить скрипт sh.
Однако, судя по одному из ваших предыдущих комментариев, вы также можете переименовать скрипт в name.bat и удалить строку «#! / Bin / sh». Теперь у вас есть пакетный файл, который Windows должна понимать. Вы можете прочитать больше о пакетных файлах здесь .
В качестве альтернативы вы можете перейти на темную сторону и установить Linux. Из приглашения:
sh runide.sh
или же
sudo sh runide.sh
Ваша программа будет работать, и у вас будет лучшая система.
Загрузите и установите .git для Windows
Щелкните правой кнопкой мыши на рабочем столе и скажите «git bash here»
Выполните ваш скрипт, как в Unix
Готово!
Внимание: многие команды не будут работать на окнах! Но все же многие основные вещи будут работать.
Если вам нужен этот скрипт регулярно, вы можете создать ярлык (например, на рабочем столе):
Создайте ярлык для mintty.exe
рабочего стола
Отредактируйте свойства ярлыка и измените цель (оставьте путь):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Вы пытаетесь заправить свою машину апельсиновым соком вместо бензина. Windows совместно использует аналогичные команды, хранящиеся в файлах .bat или .cmd, со сценариями оболочки Unix / Linux / zOS Unix / * ix для Unix / Linux / zOS, поскольку эти два семейства операционных систем имеют общего предка машин 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 (без минимализма) - просто для того, чтобы получить оболочку и Unix инструменты. Поместите его на флешку для этих особых случаев.
Кто-то сказал что-то об использовании MS-DOS /
для команд и \
путей. Это немного вводит в заблуждение. Посмотрите на мой пример:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Не имеет разницы в действии. Да, это не так для всех операций - фактический ответ - просто Нет , или без Cygwin или SSHD вы не сможете.
Я только знаю , потому что я тупо потратил полдня , пытаясь выяснить , что if then fi
и eval
, exec
делать с -Djava.something
при вызове.
Используйте Github для Windows. Он содержит все исполняемые файлы среды Unix.
Я нашел другое и простое решение под названием UnixUtil .
Загрузите и разархивируйте его на диск C :. Установите переменную среды path
для включения C:\UnixUtils\usr\local\wbin
.
Это важно. НЕ устанавливайте путь кC:\UnixUtils\bin
Для полноты картины хочу упомянуть новую функцию «Подсистема Windows для Linux» для Windows 10. Подробности описаны в http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- Баш-оболочки на окнах-10 /
Обратите внимание, что для этого необходимо активировать переключатель «Режим разработчика» и включить опцию «Подсистема Windows для Linux (бета-версия)».
Для себя я обнаружил, что установки Git для Windows (которую я использую в любом случае) достаточно.
Это старая тема, но для тех, кто работает под управлением Windows 10. Просто откройте функции Windows на панели управления «Включение или отключение функций Windows»
Выберите функцию «Подсистема Windows для Linux». После установки у вас есть «Bash», и вы даже можете настроить собственные серверы Linux в Bash. И конечно, команда sh в bash тоже работает.
Вполне возможно, что проблема на самом деле находится внутри файла name.sh
- вы пытаетесь использовать .
команду, но она пытается запустить своего рода оболочку (например csh
, я думаю), в которой это недопустимая команда.
Итак: name.sh
начинается ли с правильного #!/bin/sh
(если вы на самом деле пытаетесь запустить sh
)?
хорошо, в этом есть ОЧЕНЬ много неправильного - удалите #! / bin / sh и измените расширение на bat, и это может сработать еще с несколькими исправлениями. Затем вы можете просто вызвать его по имени файла.
Синтаксис сценария оболочки Unix и командного файла Windows не слишком похожи. Cygwin, или куча возни с unxutils может сделать что-то, что будет работать в обоих случаях, но если вы АБСОЛЮТНО не уверены, что среда всегда одинакова, это не стоит головной боли
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Какая?! Я подозреваю, что вы никогда не пробовали это ... В Windows даже самые простые возможности bash не поддерживаются или требуют длительного синтаксиса.
Если у вас дома (или на работе) установлен Linux и он подключен к той же сети, и эта сеть безопасна, это может помочь:
mount //WinMachine/Share LinuxFolder
(IIRC и требует Samba ).Запустить скрипт оболочки из windows. Сначала используйте команду: dos2unix, затем вы можете использовать обычную команду: sh runide.sh
Это сработает.
Несмотря на то, что существующие ответы здесь были правильными в то время, Windows 10 имеет в настоящее время необязательно включать в себя модифицированную версию Ubuntu работает полный Баш оболочку .
После того, как скрипты станут исполняемыми, они могут запускаться обычным способом изнутри bash, например:
chmod +x myscript.sh
./myscript.sh
Если вы хотите запустить скрипт прямо из Windows, вы можете создать ярлык в том же каталоге и установить для «Target» что-то вроде:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Если путь вашего скрипта относительно местоположения ярлыка (как в примере выше), убедитесь, что поле «Начать с» также пустое.