2010-03-15 07:34:42 +0000 2010-03-15 07:34:42 +0000
68
68
Advertisement

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

Advertisement

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

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

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

Advertisement

Ответы (15)

76
76
76
2010-03-15 07:58:46 +0000

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

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

13
13
13
2010-03-15 13:48:44 +0000

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

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

Поэтому Windows думает, что вы пытаетесь выполнить команду “…” и разбирает ее с аргументом “/name.sh”. Правильным вариантом будет “.\name.sh”. Кроме того, Windows будет автоматически искать вашу команду в текущем каталоге, так что вы можете просто ввести “name.sh”.

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

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

11
Advertisement
11
11
2010-11-18 15:46:30 +0000

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

sh runide.sh

или

sudo sh runide.sh

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

9
9
9
2017-04-09 18:58:10 +0000

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

  • Скачайте и установите .git для Windows

  • Нажмите правую кнопку мыши на рабочем столе и скажите “git bash здесь ”

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

  • Готово!

Внимание: Многие команды не будут работать на Windows! Но, тем не менее, многие из основных вещей будет работать.

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

  • Создать Shortcut в mintty.exe на рабочем столе

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

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

5
Advertisement
5
5
2011-08-16 22:52:50 +0000

Ты пытаешься управлять машиной на апельсиновом соке вместо бензина. 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 файла, вы можете перевести .sh файл в .bat или .cmd файл. Тем не менее, вы часто будете сталкиваться с большим количеством программ в стиле Unix, которые не имеют эквивалентов в Windows-grep, sed, vi, emacs и т.д.. Таким образом, вызов для установки CygWin (без минималиста) – просто для получения оболочки и инструментов Unix. Положите его на флешку, для этих особых случаев.

3
3
3
2012-05-28 23:19:47 +0000

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

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

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

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

2
Advertisement
2
2
2015-07-20 16:24:31 +0000

Используйте Github для Windows. Он содержит все исполняемые файлы среды Unix. https://github-windows.s3.amazonaws.com/GitHubSetup.exe

1
1
1
2014-05-13 22:05:11 +0000

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

Скачать и распаковать на диск C:. Установите переменную окружения path, чтобы включить C:\UnixUtils\usr\local\wbin.

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

1
Advertisement
1
1
2018-05-01 16:06:51 +0000

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

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

1
1
1
2016-12-27 10:39:14 +0000

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

Обратите внимание, что для этого необходимо активировать переключатель “Режим разработчика” и включить опцию “Windows Subsystem for Linux (Beta)”.

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

0
Advertisement
0
0
2012-08-31 15:16:38 +0000

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

  1. Сделайте общий доступ к папкам в Windows (довольно просто, но убедитесь, что сеть безопасна от злоумышленников).
  2. Установите его в Linux с помощью mount //WinMachine/Share LinuxFolder (IIRC, и требуется Samba ).
  3. Используя что-то вроде PuTTY , войдите удаленно в этот Linux box.
  4. Выполните команду в папке смонтированных.
0
0
0
2010-03-15 13:46:42 +0000

Хорошо, в этом LOT неправильно - сбросьте #!/bin/sh, и измените расширение на bat, и это может сработать с еще несколькими исправлениями. Синтаксис unix-скрипта оболочки и пакетного файла windows не слишком похожи. cygwin, или куча путаницы с неаккультистами может сделать что-то, что будет работать и в том, и в другом случае, но если вы АБСОЛЮТНО уверены, что окружение всегда одно и то же, то это не стоит головной боли.

0
Advertisement
0
0
2016-08-25 07:34:59 +0000

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

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

chmod +x myscript.sh
./myscript.sh

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

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

Если путь вашего сценария относительно места расположения ярлыка (как в примере выше), убедитесь, что поле ‘Start in’ также пустое.

0
0
0
2015-11-23 11:57:56 +0000

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

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

0
Advertisement
0
0
2010-03-15 07:55:19 +0000

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

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

Похожие вопросы

3
19
10
28
10
Advertisement
Advertisement