Шелл скрипты или .SH файлы похожи на командные файлы Windows, которые могут выполняться в Linux или Unix.
В Windows 10 можно запустить файл .sh или скрипт оболочки, используя подсистему Windows для Linux.
В этом руководстве мы покажем вам, как запустить файл скрипта оболочки в Windows 10.
Содержание
- Как запустить файл .sh или скрипт шелла в Windows 10
- 1] Выполнить файл скрипта оболочки, используя WSL
- 2] Выполнить скрипт оболочки, используя Ubuntu в Windows 10
Как запустить файл .sh или скрипт шелла в Windows 10
Bash – это оболочка и командный язык Unix, который может запускать файлы скрипты .sh.
Вам не нужно устанавливать Ubuntu или любые другие дистрибутивы Linux, если ваши скрипты не нуждаются в поддержке реального ядра Linux.
Мы поделимся обоими методами.
- Выполнить файл скрипт оболочки, используя WSL
- Выполнить скрипт оболочки с помощью Ubuntu в Windows 10
1] Выполнить файл скрипта оболочки, используя WSL
Установите WSL или Windows Subsystem для Linux
Перейдите в Настройки> Обновление и безопасность> Для разработчиков.
Проверьте переключатель режима разработчика.
Поищите «Функции Windows», выберите «Включить или отключить функции Windows».
Прокрутите, чтобы найти WSL, установите флажок и установите его.
После этого необходимо перезагрузить компьютер, чтобы завершить установку запрошенных изменений.
Нажмите Перезагрузить сейчас.
BASH отныне будет доступен в командной строке и PowerShell.
Выполнить файлы скриптов оболочки
- Откройте командную строку и перейдите в папку, где доступен файл скрипта
- Введите Bash script-filename.sh и нажмите клавишу Enter.
- Система выполнит скрипт, и в зависимости от файла вы должны увидеть вывод.
На платформе Linux вы обычно используете SH, но здесь вам нужно использовать BASH.
Тем не менее, BASH в Windows имеет свои ограничения, поэтому, если вы хотите выполнить их в среде Linux, вам нужно установить Ubuntu или что-то подобное.
2] Выполнить скрипт оболочки, используя Ubuntu в Windows 10
Убедитесь, что у вас установлена Ubuntu или любой другой дистрибутив Linux.
Ubuntu смонтирует или сделает все ваши каталоги Windows доступными в /mnt.
Таким образом, диск C доступен по адресу /mnt/C.
Таким образом рабочий стол будет доступен по адресу /mnt/c/users/<username>/desktop.
Теперь следуйте этим шагам
- В командной строке введите Bash, и система запустит приглашение дистрибутива.
- Перейдите в папку с помощью команды «cd» , где доступны скрипты.
- Введите «sh script.sh» и нажмите Enter
Система выполнит скрипт
Поскольку Linux теперь доступен в Windows, вам не нужно использовать какие-либо сторонние приложения, такие как Cygwin.
WSL должно быть достаточно для большинства скриптов, чтобы помочь вам запустить эти самые крипты оболочки в Windows 10.
How can I run .sh on Windows 7 Command Prompt? I always get this error when I try to run this line in it,
app/build/build.sh
error,
'app' is not recognized...
or,
bash app/build/build.sh
error,
'bash' is not recognized...
Any ideas what have I missed?
Here the screen grab,
asked Oct 23, 2014 at 6:59
1
Install GIT. During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation right click in your folder select GIT Bash Here
(see attached pic) and use your sh command like for example:
sh test.sh
answered May 27, 2016 at 8:15
Faisal MqFaisal Mq
4,7764 gold badges34 silver badges39 bronze badges
4
The error message indicates that you have not installed bash
, or it is not in your PATH
.
The top Google hit is http://win-bash.sourceforge.net/ but you also need to understand that most Bash scripts expect a Unix-like environment; so just installing Bash is probably unlikely to allow you to run a script you found on the net, unless it was specifically designed for this particular usage scenario. The usual solution to that is https://www.cygwin.com/ but there are many possible alternatives, depending on what exactly it is that you want to accomplish.
If Windows is not central to your usage scenario, installing a free OS (perhaps virtualized) might be the simplest way forward.
The second error message is due to the fact that Windows nominally accepts forward slash as a directory separator, but in this context, it is being interpreted as a switch separator. In other words, Windows parses your command line as app /build /build.sh
(or, to paraphrase with Unix option conventions, app --build --build.sh
). You could try appbuildbuild.sh
but it is unlikely to work, because of the circumstances outlined above.
answered Oct 23, 2014 at 7:33
tripleeetripleee
170k31 gold badges261 silver badges305 bronze badges
1
The most common way to run a .sh file is using the sh command:
C:>sh my-script-test.sh
other good option is installing CygWin
in Windows
the home
is located in:
C:cygwin64home[user]
for example i execute my my-script-test.sh
file using the bash command as:
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
answered Jun 9, 2015 at 23:09
JorgesysJorgesys
123k23 gold badges328 silver badges264 bronze badges
6
you can use also cmder
Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout, looking sexy from the start
cmder.net
answered Oct 18, 2016 at 17:05
vipmaavipmaa
1,00216 silver badges24 bronze badges
1
On Windows 10 Anniversary Update, it’s even easier to run shell commands in/with bash on ubuntu on windows
I was trying to set my region for my x-wrt r7000 netgear router, I found the following worked for me, using bash on ubuntu on windows, you do have to enable subsystem found in windows features, and dev mode on
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
answered Aug 25, 2016 at 21:10
SignedAdamSignedAdam
711 silver badge1 bronze badge
1
Install the GitBash
tool in the Windows OS. Set the below Path
in the environment variables of System for the Git installation.
<Program Files in C:>Gitbin
<Program Files in C:>Gitusrbin
Type ‘sh‘ in cmd
window to redirect into Bourne shell and run your commands in terminal.
answered Aug 21, 2020 at 19:36
TechRookieTechRookie
1411 silver badge4 bronze badges
1
Personally I used this batch file, but it does require CygWin installed (64-bit as shown).
Just associate the file type .SH with this batchfile (ExecSH.BAT in my case) and you can double-click on the .SH and it runs.
@echo off
setlocal
if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof
set _CYGBIN=C:cygwin64bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof
:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%CD%"') do set _CYGPATH=%%A
:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%; %_CYGSCRIPT% %*'
Based on this original work.
answered Feb 21, 2017 at 12:23
AnonymouseAnonymouse
9379 silver badges20 bronze badges
I use Windows 10 Bash shell aka Linux Subsystem aka Ubuntu in Windows 10 as guided here
answered Apr 9, 2020 at 6:20
Nam G VUNam G VU
32.2k68 gold badges226 silver badges366 bronze badges
just install git and by «bash <name.sh>» run your .sh file.
answered Apr 3, 2021 at 8:51
Have you tried cd
ing to the root directory where your .sh
is located in order to execute it from there, instead of writing down a path to the file as you showed in your question?
Like so:
$ cd app/build
$ build.sh
answered May 28, 2021 at 6:59
D4V1DD4V1D
5,7353 gold badges29 silver badges64 bronze badges
How can I run .sh on Windows 7 Command Prompt? I always get this error when I try to run this line in it,
app/build/build.sh
error,
'app' is not recognized...
or,
bash app/build/build.sh
error,
'bash' is not recognized...
Any ideas what have I missed?
Here the screen grab,
asked Oct 23, 2014 at 6:59
1
Install GIT. During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation right click in your folder select GIT Bash Here
(see attached pic) and use your sh command like for example:
sh test.sh
answered May 27, 2016 at 8:15
Faisal MqFaisal Mq
4,7764 gold badges34 silver badges39 bronze badges
4
The error message indicates that you have not installed bash
, or it is not in your PATH
.
The top Google hit is http://win-bash.sourceforge.net/ but you also need to understand that most Bash scripts expect a Unix-like environment; so just installing Bash is probably unlikely to allow you to run a script you found on the net, unless it was specifically designed for this particular usage scenario. The usual solution to that is https://www.cygwin.com/ but there are many possible alternatives, depending on what exactly it is that you want to accomplish.
If Windows is not central to your usage scenario, installing a free OS (perhaps virtualized) might be the simplest way forward.
The second error message is due to the fact that Windows nominally accepts forward slash as a directory separator, but in this context, it is being interpreted as a switch separator. In other words, Windows parses your command line as app /build /build.sh
(or, to paraphrase with Unix option conventions, app --build --build.sh
). You could try appbuildbuild.sh
but it is unlikely to work, because of the circumstances outlined above.
answered Oct 23, 2014 at 7:33
tripleeetripleee
170k31 gold badges261 silver badges305 bronze badges
1
The most common way to run a .sh file is using the sh command:
C:>sh my-script-test.sh
other good option is installing CygWin
in Windows
the home
is located in:
C:cygwin64home[user]
for example i execute my my-script-test.sh
file using the bash command as:
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
answered Jun 9, 2015 at 23:09
JorgesysJorgesys
123k23 gold badges328 silver badges264 bronze badges
6
you can use also cmder
Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout, looking sexy from the start
cmder.net
answered Oct 18, 2016 at 17:05
vipmaavipmaa
1,00216 silver badges24 bronze badges
1
On Windows 10 Anniversary Update, it’s even easier to run shell commands in/with bash on ubuntu on windows
I was trying to set my region for my x-wrt r7000 netgear router, I found the following worked for me, using bash on ubuntu on windows, you do have to enable subsystem found in windows features, and dev mode on
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
answered Aug 25, 2016 at 21:10
SignedAdamSignedAdam
711 silver badge1 bronze badge
1
Install the GitBash
tool in the Windows OS. Set the below Path
in the environment variables of System for the Git installation.
<Program Files in C:>Gitbin
<Program Files in C:>Gitusrbin
Type ‘sh‘ in cmd
window to redirect into Bourne shell and run your commands in terminal.
answered Aug 21, 2020 at 19:36
TechRookieTechRookie
1411 silver badge4 bronze badges
1
Personally I used this batch file, but it does require CygWin installed (64-bit as shown).
Just associate the file type .SH with this batchfile (ExecSH.BAT in my case) and you can double-click on the .SH and it runs.
@echo off
setlocal
if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof
set _CYGBIN=C:cygwin64bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof
:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%CD%"') do set _CYGPATH=%%A
:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%; %_CYGSCRIPT% %*'
Based on this original work.
answered Feb 21, 2017 at 12:23
AnonymouseAnonymouse
9379 silver badges20 bronze badges
I use Windows 10 Bash shell aka Linux Subsystem aka Ubuntu in Windows 10 as guided here
answered Apr 9, 2020 at 6:20
Nam G VUNam G VU
32.2k68 gold badges226 silver badges366 bronze badges
just install git and by «bash <name.sh>» run your .sh file.
answered Apr 3, 2021 at 8:51
Have you tried cd
ing to the root directory where your .sh
is located in order to execute it from there, instead of writing down a path to the file as you showed in your question?
Like so:
$ cd app/build
$ build.sh
answered May 28, 2021 at 6:59
D4V1DD4V1D
5,7353 gold badges29 silver badges64 bronze badges
How can I run .sh on Windows 7 Command Prompt? I always get this error when I try to run this line in it,
app/build/build.sh
error,
'app' is not recognized...
or,
bash app/build/build.sh
error,
'bash' is not recognized...
Any ideas what have I missed?
Here the screen grab,
asked Oct 23, 2014 at 6:59
1
Install GIT. During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation right click in your folder select GIT Bash Here
(see attached pic) and use your sh command like for example:
sh test.sh
answered May 27, 2016 at 8:15
Faisal MqFaisal Mq
4,7764 gold badges34 silver badges39 bronze badges
4
The error message indicates that you have not installed bash
, or it is not in your PATH
.
The top Google hit is http://win-bash.sourceforge.net/ but you also need to understand that most Bash scripts expect a Unix-like environment; so just installing Bash is probably unlikely to allow you to run a script you found on the net, unless it was specifically designed for this particular usage scenario. The usual solution to that is https://www.cygwin.com/ but there are many possible alternatives, depending on what exactly it is that you want to accomplish.
If Windows is not central to your usage scenario, installing a free OS (perhaps virtualized) might be the simplest way forward.
The second error message is due to the fact that Windows nominally accepts forward slash as a directory separator, but in this context, it is being interpreted as a switch separator. In other words, Windows parses your command line as app /build /build.sh
(or, to paraphrase with Unix option conventions, app --build --build.sh
). You could try appbuildbuild.sh
but it is unlikely to work, because of the circumstances outlined above.
answered Oct 23, 2014 at 7:33
tripleeetripleee
170k31 gold badges261 silver badges305 bronze badges
1
The most common way to run a .sh file is using the sh command:
C:>sh my-script-test.sh
other good option is installing CygWin
in Windows
the home
is located in:
C:cygwin64home[user]
for example i execute my my-script-test.sh
file using the bash command as:
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
answered Jun 9, 2015 at 23:09
JorgesysJorgesys
123k23 gold badges328 silver badges264 bronze badges
6
you can use also cmder
Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout, looking sexy from the start
cmder.net
answered Oct 18, 2016 at 17:05
vipmaavipmaa
1,00216 silver badges24 bronze badges
1
On Windows 10 Anniversary Update, it’s even easier to run shell commands in/with bash on ubuntu on windows
I was trying to set my region for my x-wrt r7000 netgear router, I found the following worked for me, using bash on ubuntu on windows, you do have to enable subsystem found in windows features, and dev mode on
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
answered Aug 25, 2016 at 21:10
SignedAdamSignedAdam
711 silver badge1 bronze badge
1
Install the GitBash
tool in the Windows OS. Set the below Path
in the environment variables of System for the Git installation.
<Program Files in C:>Gitbin
<Program Files in C:>Gitusrbin
Type ‘sh‘ in cmd
window to redirect into Bourne shell and run your commands in terminal.
answered Aug 21, 2020 at 19:36
TechRookieTechRookie
1411 silver badge4 bronze badges
1
Personally I used this batch file, but it does require CygWin installed (64-bit as shown).
Just associate the file type .SH with this batchfile (ExecSH.BAT in my case) and you can double-click on the .SH and it runs.
@echo off
setlocal
if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof
set _CYGBIN=C:cygwin64bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof
:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%cygpath.exe "%CD%"') do set _CYGPATH=%%A
:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%; %_CYGSCRIPT% %*'
Based on this original work.
answered Feb 21, 2017 at 12:23
AnonymouseAnonymouse
9379 silver badges20 bronze badges
I use Windows 10 Bash shell aka Linux Subsystem aka Ubuntu in Windows 10 as guided here
answered Apr 9, 2020 at 6:20
Nam G VUNam G VU
32.2k68 gold badges226 silver badges366 bronze badges
just install git and by «bash <name.sh>» run your .sh file.
answered Apr 3, 2021 at 8:51
Have you tried cd
ing to the root directory where your .sh
is located in order to execute it from there, instead of writing down a path to the file as you showed in your question?
Like so:
$ cd app/build
$ build.sh
answered May 28, 2021 at 6:59
D4V1DD4V1D
5,7353 gold badges29 silver badges64 bronze badges
Содержание:
- 1 Git Bash
- 2 Cygwin
Большинству пользователей так или иначе приходилось сталкиваться со скриптами – мини-программами, используемыми обычно для чисто утилитарных целей. Наиболее распространены пакетные файлы CMD и BAT, однако иногда попадаются и другие типы скриптов, например, SH – сценарии, используемые прикладными программами в Bash. Несмотря на то, что предназначаются такие скрипты для Linux, благодаря интеграции подсистемы Bash они запросто могут быть выполнены и в Windows 10. Впрочем, если вы без подготовки попробуете запустить в «десятке» пакетный файл SH, то у системы не получится его обработать.
Чтобы иметь возможность запускать в среде Windows SH-сценарии, вам нужно ставить подсистему Linux. Но можно пойти и другим путем, установив альтернативные интерпретаторы, например, Git Bash или Cygwin. Они позволяют компилировать и запускать Unix и Linux-сценарии в Windows, причем как в 64-разрядной, так и в 32-разрядной версии системы.
Git Bash
Приложение Git Bash доступно для скачивания с сайта разработчика git-scm.com/downloads. Скачав версию для Windows вашей разрядности, установите программу, проигнорировав многочисленные настройки в окне мастера (менять их нет смысла). После запуска приложения вы увидите окно командной строки, очень похожей на окно стандартной консоли CMD, только с другим приглашением ввода.
Теперь, чтобы запустить SH-скрипт, перетащите его в окно консоли и нажмите ввод. Вот и всё, командный файл будет исполнен.
А еще вы можете открыть консоль Git Bash в любом каталоге, выбрав в контекстном меню Проводника, куда интерпретатор интегрируется при установке, опцию «Git Bash Here». В этом случае скрипты запускаются командой sn name, где name – имя скрипта.
Cygwin
Процедура установки приложения Cygwin, доступного для скачивания по ссылке www.cygwin.com, несколько отличается. В окне мастера-установщика вам нужно будет выбрать загрузку файлов из интернета, затем указать сервер (подойдет любой), место установки (по умолчанию корень диска C) и пакеты установки. Здесь всё можно оставить по умолчанию либо выбрать Full в выпадающем меню View.
Подобно Git Bash, Cygwin представляет собой командную строку, из которой и запускаются SH-скрипты. Да, перетаскивание в ней тоже работает.
Наконец, попробовать запустить SH-скрипт можно в обычной командной строке Windows 10, удалив в Блокноте первую строку #!/bin/bash и изменив расширение файла на BAT или CMD. Однако подобный скрипт отработает только в том случае, если содержащийся в нём код будет понятен интерпретатору CMD.
Shell Scripts или .SH файлы похожи на командные файлы Windows, которые могут выполняться в Linux или Unix. В Windows 10 можно запустить файл .sh или Shell Script, используя подсистему Windows для Linux. В этом посте мы покажем вам, как запустить файл сценария оболочки в Windows 10.
Bash — это оболочка и командный язык Unix, который может запускать файлы Shell Script. Вам не нужно устанавливать Ubuntu или любые другие дистрибутивы Linux, если ваши сценарии не нуждаются в поддержке реального ядра Linux. Мы поделимся обоими методами.
- Выполнить файл сценария оболочки, используя WSL
- Выполнить сценарий оболочки с помощью Ubuntu в Windows 10
1] Выполнить файл сценария оболочки, используя WSL
Установите WSL или Windows Subsystem для Linux
Перейдите в Настройки → Обновление и безопасность → Для разработчиков. Проверьте переключатель режима разработчика. Ищите «Функции Windows», выберите «Включить или отключить функции Windows».
Прокрутите, чтобы найти WSL, установите флажок и установите его. После этого необходимо перезагрузить компьютер, чтобы завершить установку запрошенных изменений. Нажмите Перезагрузить сейчас. BASH будет доступен в командной строке и PowerShell.
Выполнить файлы сценариев оболочки
- Откройте командную строку и перейдите в папку, где доступен файл сценария.
- Введите
Bash script-filename.sh
и нажмите клавишу ввода. - Он выполнит скрипт, и в зависимости от файла вы должны увидеть вывод.
На платформе Linux вы обычно используете SH, но здесь вам нужно использовать BASH. Тем не менее, BASH в Windows имеет свои ограничения, поэтому, если вы хотите выполнить в среде Linux, вам нужно установить Ubuntu или что-то подобное.
2] Выполнить сценарий оболочки, используя Ubuntu в Windows 10
Убедитесь, что у вас установлен Ubuntu или любой другой дистрибутив Linux. Ubuntu смонтирует или сделает все ваши каталоги Windows доступными в /mnt. Таким образом, диск C доступен по адресу /mnt/C. Так что если рабочий стол будет доступен по адресу /mnt/c/users/<username>/desktop.
Теперь следуйте этим шагам
- В командной строке введите Bash, и он запустит приглашение distro.
- Перейдите в папку с помощью команды «cd» в папку, где доступны сценарии.
- Введите «sh script.sh» и нажмите ввод.
- Он выполнит сценарий, и если они зависят от каких-либо основных функций Linux.
Поскольку Linux теперь доступен в Windows, вам не нужно использовать какие-либо сторонние приложения, такие как Cygwin. WSL должно быть достаточно для большинства сценариев, чтобы помочь вам запустить сценарий оболочки в Windows 10.
When I am trying to execute a file(name.sh) in the command line by the command ./name.sh , I am getting the error that:
«.» is not recognized as an internal
or external command, operable or batch
file
please help me execute the .sh file
Broam
3,98418 silver badges20 bronze badges
asked Mar 15, 2010 at 7:34
0
You’re on Windows CMD.EXE (from the error message). It uses a different syntax to execute commands. You’ll need to use sh name.sh
, assuming that you’ve got Cygwin or similar installed.
To clarify, Windows does not have a built-in utility to support .sh files. To run such, you’ll need to install a third-party tool such as Cygwin.
Rich Homolka
30.5k6 gold badges52 silver badges79 bronze badges
answered Mar 15, 2010 at 7:58
Roger LipscombeRoger Lipscombe
2,1933 gold badges21 silver badges34 bronze badges
3
Best solution in my opinion:
-
Download and install .git for Windows
-
Right click desktop and say «git bash here»
-
Execute your script like in unix
-
Done!
Caution: Many commands won’t work on windows! But still, a lot of the basic stuff will work.
If you need that script regularly you may want to create a shortcut (on your desktop e.g.):
-
Create a Shortcut to
mintty.exe
on your desktop -
Edit properties of the shortcut and change the target (keep the path):
-
C:Program FilesGitusrbinmintty.exe" -h always /bin/bash -l -e 'D:folderscript.sh'
answered Apr 9, 2017 at 18:58
2
You are trying to run a Linux command at the Windows Command Prompt.
On Linux the forward slash is a path separater. On Windows the backslash is a path separator and the forward slash generally indicates an argument.
Therefore, Windows thinks you are trying to run a command called «.» and parsing it the argument «/name.sh». The correct convention would be «.name.sh». Additionally Windows will automatically search the current directory for your command so you could just type «name.sh».
The next problem you will face is that Windows does not know what a sh script is, again this is a Linux thing. You could solve this by installing Cygwin if you really want or need to run a sh script.
However, judging by one of your previous comments you could just as well rename the script to name.bat and delete the «#!/bin/sh» line. Now you have a Batch file which Windows should understand. You can read more about batch files here.
answered Mar 15, 2010 at 13:48
Martin FidoMartin Fido
3112 silver badges3 bronze badges
Alternatively you could turn to the dark side and install Linux. From the prompt:
sh runide.sh
or
sudo sh runide.sh
Your program will run and you will have a better system as well.
Gaff
18.3k15 gold badges56 silver badges68 bronze badges
answered Nov 18, 2010 at 15:46
stevesteve
1371 silver badge2 bronze badges
2
You’re trying to run your car on orange juice instead of gasoline. Windows shares similar commands stored in .bat or .cmd files with Unix/Linux/zOS Unix Subsystem/*ix shell scripts as these two families of operating systems share a common ancestor the DEC PDP-x machines.
If you want instant gratification, you will need to install an environment that provides a «sh.exe» program or «csh.exe» or «bash.exe» program (tsh.exe anyone?)
Alternatively, if you know Unix script commands, very well, and you know Windows .cmd and .bat file commands, very well, you can translate the .sh file into a .bat or .cmd file. Even so, you will often encounter more Unix-styled programs that have no equivalent under Windows—grep, sed, vi, emacs, etc. Thus, the call to install CygWin (no minimalist)—just to get the shell and Unix tools. Put it on a flash-drive, for these special occasions.
answered Aug 16, 2011 at 22:52
J.M.J.M.
511 silver badge1 bronze badge
Someone said something about MS-DOS using /
for commands and for paths. This is slightly misleading. Look at my example:
C:myfoofoo>cd../..
C:myfoofoo>cd....
Has no difference in effect. Yes, it is not true for all operations – the actual answer is simply No, or without Cygwin or SSHD you can’t.
I only know because I stupidly spent half a day trying to figure out what if then fi
and eval
, exec
do with -Djava.something
when called.
slhck
219k68 gold badges591 silver badges578 bronze badges
answered May 28, 2012 at 23:19
This is an old thread but for those running Windows 10. Just open windows features from the control panel ‘Turn Windows Features on or Off’
Choose the feature ‘Windows Subsystem for Linux’.
After installing, you have ‘Bash’ and you even can configure native Linux servers within bash.
And of course,
the sh command, within bash, works too.
answered May 1, 2018 at 16:06
I found a different and easy solution, called UnixUtil.
Download and unzip it to C: drive. Set the environment variable path
to include C:UnixUtilsusrlocalwbin
.
This is important. DO NOT set path to C:UnixUtilsbin
answered May 13, 2014 at 22:05
For completeness I want to mention a new “Windows Subsystem for Linux” feature for Windows 10. The details are described in http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
Note, that it requires activate the “Developer Mode” switch and
enable the “Windows Subsystem for Linux (Beta)” option.
For myself I found that Git for Windows installation (that I am using anyway) is sufficient.
answered Dec 27, 2016 at 10:39
It’s possible that the problem is actually within the file name.sh
— you are trying to use the .
command but it is attempting to run a kind of shell (e.g., csh
, I think) in which that’s not a valid command.
So: does name.sh
start with the correct #!/bin/sh
(if you are actually trying to run sh
)?
answered Mar 15, 2010 at 7:55
1
ok, there’s a LOT wrong with that — drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes. Then you can just invoke it by its filename as well.
The syntax of a unix shell script, and a windows batch file arn’t too similar. cygwin, or a load of messing around with unxutils might make something that would work in both, but unless you’re ABSOLUTELY sure the environment is always the same, it isn’t worth the headache
answered Mar 15, 2010 at 13:46
Journeyman Geek♦Journeyman Geek
125k51 gold badges252 silver badges418 bronze badges
3
If you have a Linux box in your home (or work) and plugged to the same network, and this network is safe, this might do the trick:
- Make a folder share on Windows (pretty easy, but make sure the network is safe from intruders).
- Mount it in Linux with
mount //WinMachine/Share LinuxFolder
(IIRC, and requires Samba). - Using something like PuTTY, log in remotely to that Linux box.
- Run your command in the mounted folder.
answered Aug 31, 2012 at 15:16
Camilo MartinCamilo Martin
2,5544 gold badges30 silver badges41 bronze badges
To run the shell script from the windows.
First use the command : dos2unix
then you can use your normal command :
sh runide.sh
This will work out.
answered Nov 23, 2015 at 11:57
2
Although the existing answers here were correct at the time, Windows 10 does now optionally include a modified version of Ubuntu running a full bash shell.
Once made executable, scripts can be run in the usual way from within bash, eg:
chmod +x myscript.sh
./myscript.sh
If you want to run a script directly from the Windows you could create a shortcut in the same directory and set the ‘Target’ to something like:
C:WindowsSystem32bash.exe -c "./myscript.sh"
If the path of your script is relative to the location of the shortcut (like the example above) ensure the ‘Start in’ field is also blank.
answered Aug 25, 2016 at 7:34
MolombyMolomby
1,7451 gold badge16 silver badges15 bronze badges
Download PC Repair Tool to quickly find & fix Windows errors automatically
Shell Scripts or .SH files are like batch files of Windows which can be executed in Linux or Unix. It is possible to run .sh or Shell Script file in Windows 10 using Windows Subsystem for Linux. In this post, we will show you how to run a Shell Script file in Windows 11/10.
Bash is a Unix shell and command language which can run Shell Script files. You do not need to install Ubuntu or any other Linux Distros unless your scripts need the support of the real Linux kernel. We will share both the methods.
- Execute Shell Script file using WSL
- Execute Shell Script using Ubuntu on Windows 10
1] Execute Shell Script file using WSL
Install WSL or Windows Subsystem for Linux
Go to Settings > Update & Security > For Developers. Check the Developer Mode radio button. And search for “Windows Features”, choose “Turn Windows features on or off”.
Scroll to find WSL, check the box, and then install it. Once done, one has to reboot to finish installing the requested changes. Press Restart now. BASH will be available in the Command Prompt and PowerShell.
Execute Shell Script Files
- Open Command Prompt and navigate to the folder where the script file is available.
- Type Bash script-filename.sh and hit the enter key.
- It will execute the script, and depending on the file, you should see an output.
On a Linux platform, you usually use SH, but here you need to use BASH. That said, BASH in Windows has its limitations, so if you want to execute in a Linux environment, you need to install Ubuntu or anything similar.
2] Execute Shell Script using Ubuntu on Windows 11/10
Make sure you have Ubuntu or any other Linux distros installed. Ubuntu will mount or make all your Windows directories available under /mnt. So the C drive is available at /mnt/C. So if the desktop will be available at /mnt/c/users/<username>/desktop.
Now follow these steps
- Type Bash in run prompt, and it will launch the distro prompt.
- Navigate to the folder using “cd” command to the folder where the scripts are available.
- Type “sh script.sh” and hit Enter.
It will execute the script, and if they have a dependency on any of the core Linux features.
Since Linux is now available in Windows, you need not use any third-party applications like Cygwin. WSL should be enough for most of the scenarios to help you run a shell script in Windows 11/10.
How do I create a .SH file?
The steps to create a shell script file are:
- Create a file using a editor
- Name script file with extension . sh
- Start the script with #! /bin/sh
- Write the desired code
- Save the script file as ABC.sh
- For executing the script type bash ABC.sh.
Can you run shell scripts in Windows?
Yes, now with Bash Shell in Windows 11 and Windows 10, you can now create and run Bash shell scripts and incorporate Bash commands into a Windows batch file or PowerShell script.
Ashish is a veteran Windows and Xbox user who excels in writing tips, tricks, and features on it to improve your day-to-day experience with your devices. He has been a Microsoft MVP (2008-2010).
В этом руководстве мы покажем вам, как запустить файл скрипта оболочки в Windows 10.
Вам не нужно устанавливать Ubuntu или любые другие дистрибутивы Linux, если ваши скрипты не нуждаются в поддержке реального ядра Linux.
Мы поделимся обоими методами.
Содержание
- 1] Выполнить файл скрипта оболочки, используя WSL
- 2] Выполнить скрипт оболочки, используя Ubuntu в Windows 10
- ‼️ 4 способа запустить команды Linux в Windows
- Использование команд Linux внутри Windows
- 1. Используйте оболочку Linux Bash в Windows 10
- 2. Используйте Git Bash для запуска команд Bash в Windows
- 3. Использование команд Linux в Windows с Cygwin
- 4. Используйте Linux на виртуальной машине
- Запуск bash скрипта в windows
- Установка cygwin.
- 1] Выполнить файл сценария оболочки, используя WSL
- 2] Выполнить сценарий оболочки, используя Ubuntu в Windows 10
- Как в Windows 10 запускать SH-скрипты без подсистемы Bash
- Git Bash
- Cygwin
1] Выполнить файл скрипта оболочки, используя WSL
Установите WSL или Windows Subsystem для Linux
Перейдите в Настройки> Обновление и безопасность> Для разработчиков.
Проверьте переключатель режима разработчика.
Поищите «Функции Windows», выберите «Включить или отключить функции Windows».
Прокрутите, чтобы найти WSL, установите флажок и установите его.
После этого необходимо перезагрузить компьютер, чтобы завершить установку запрошенных изменений.
Нажмите Перезагрузить сейчас.
BASH отныне будет доступен в командной строке и PowerShell.
Выполнить файлы скриптов оболочки
На платформе Linux вы обычно используете SH, но здесь вам нужно использовать BASH.
Тем не менее, BASH в Windows имеет свои ограничения, поэтому, если вы хотите выполнить их в среде Linux, вам нужно установить Ubuntu или что-то подобное.
2] Выполнить скрипт оболочки, используя Ubuntu в Windows 10
Убедитесь, что у вас установлена Ubuntu или любой другой дистрибутив Linux.
Ubuntu смонтирует или сделает все ваши каталоги Windows доступными в /mnt.
Таким образом, диск C доступен по адресу /mnt/C.
Таким образом рабочий стол будет доступен по адресу /mnt/c/users/ /desktop.
Теперь следуйте этим шагам
Система выполнит скрипт
Поскольку Linux теперь доступен в Windows, вам не нужно использовать какие-либо сторонние приложения, такие как Cygwin.
WSL должно быть достаточно для большинства скриптов, чтобы помочь вам запустить эти самые крипты оболочки в Windows 10.
Источник
‼️ 4 способа запустить команды Linux в Windows
Краткое описание: Хотите использовать команды Linux, но не хотите выходить из Windows? Вот несколько способов запуска команд Linux bash в Windows.
Если вы изучаете скрипты оболочки, вероятно, как часть вашей учебной программы, вам нужно использовать команды Linux для практики команд и скриптов.
В вашей школьной лаборатории может быть установлен Linux, но лично у вас нет ноутбука с Linux, а обычный компьютер с Windows, как и у всех.
Ваша домашняя работа должна выполняться с командами Linux, и вы задаетесь вопросом, как запускать команды и скрипты Bash в Windows.
Вы можете установить Linux вместе с Windows в режиме двойной загрузки.
Этот метод позволяет вам выбрать Linux или Windows при запуске компьютера.
Но взять на себя все усилия, чтобы связываться с разделами с единственной целью запуска команды Linux, может быть не для всех актуальна.
Вы также можете использовать терминалы Linux онлайн, но ваша работа не будет сохранена.
Хорошая новость заключается в том, что есть несколько способов запуска команд Linux внутри Windows, как и в любом обычном приложении. Разве это не круто?
Использование команд Linux внутри Windows
Как “промоутер” Linux, я бы хотел, чтобы все больше и больше людей использовали «настоящий» Linux, но я понимаю, что иногда это не является приоритетом.
Если вы просто хотите попрактиковаться в Linux, вы можете использовать один из этих методов для запуска команд Bash в Windows.
1. Используйте оболочку Linux Bash в Windows 10
Знаете ли вы, что вы можете запустить дистрибутив Linux внутри Windows 10?
Подсистема Windows для Linux (WSL) позволяет запускать Linux внутри Windows.
В следующей версии WSL будет использоваться настоящее ядро Linux внутри Windows.
Этот WSL, также называемый Bash для Windows, дает вам дистрибутив Linux в режиме командной строки, работающий как обычное приложение Windows.
Не пугайтесь режима командной строки, потому что ваша цель – запускать команды Linux. Это все, что вам нужно.
Вы можете найти некоторые популярные дистрибутивы Linux, такие как Ubuntu, Kali Linux, openSUSE и т. д. В Магазине Windows.
Вам просто нужно скачать и установить его, как любое другое приложение Windows.
После установки вы можете запускать все необходимые вам команды Linux.
2. Используйте Git Bash для запуска команд Bash в Windows
Вы, наверное, знаете, что такое Git.
Это система контроля версий, разработанная создателем Linux Линусом Торвальдсом
Git для Windows – это набор инструментов, который позволяет использовать Git как в командной строке, так и в графических интерфейсах.
Одним из инструментов, включенных в Git для Windows, является Git Bash.
Приложение Git Bash предоставляет и слой эмуляции для командной строки Git.
Помимо команд Git, Git Bash также поддерживает множество утилит Bash, таких как ssh, scp, cat, find и т. д.
Другими словами, вы можете запускать множество общих команд Linux / Bash, используя приложение Git Bash.
Вы можете установить Git Bash в Windows, скачав и бесплатно установив инструмент Git для Windows с веб-сайта:
3. Использование команд Linux в Windows с Cygwin
Если вы хотите запускать команды Linux в Windows, рекомендуется Cygwin.
Cygwin был создан в 1995 году для обеспечения POSIX-совместимой среды, которая изначально работает в Windows.
Cygwin – это бесплатное программное обеспечение с открытым исходным кодом, поддерживаемое сотрудниками Red Hat и многими другими добровольцами.
В течение двух десятилетий пользователи Windows используют Cygwin для запуска и выполнения команд Linux / Bash.
Вы можете скачать Cygwin с официального сайта, который будет показан ниже.
4. Используйте Linux на виртуальной машине
Другой способ – использовать программное обеспечение для виртуализации и установить в него Linux.
Таким образом, вы устанавливаете дистрибутив Linux (с графическим интерфейсом) внутри Windows и запускаете его как обычное приложение Windows.
Этот метод требует, чтобы в вашей системе было достаточно оперативной памяти, по крайней мере, 4 ГБ, но лучше, если у вас более 8 ГБ.
Здесь хорошо то, что вы по-настоящему почувствуете использование настольного Linux. Если вам нравится интерфейс, вы можете позже полностью перейти на Linux.
Существует два популярных инструмента для создания виртуальных машин в Windows: Oracle VirtualBox и VMware Workstation Player.
Вы можете использовать любой из двух. Лично я предпочитаю VMware.
Источник
Запуск bash скрипта в windows
Запустить bash скрипт из windows также просто как если бы вы использовали linux, необходимо всего лишь установить cygwin. Все используемые мной bash скрипты для администрирования железа прекрасно работаю под cygwin-ом.
Cygwin — бесплатный эмулятор командной строки Unix для Windows, используется для переноса программного обеспечения из UNIX в Windows, запуска скрипов bash, sh и т.п.
Установка cygwin.
2. Запускаем скачанную утилиту setup.exe и жмем далее.
3. Выбираем установку из интернета, жмем далее.
4. Выбираем папку для установки (по умолчанию C:cygwin), жмем далее.
5. Выбираем папку для загрузки установочных файлов (по умолчанию C:cygwin), жмем далее.
7. Выбераем сайт, с которого будут загружаться установочные файлы (я выбрал ftp://cygwin.uib.no), жмем далее.
8. Переходим к выбору устанавливаемых пакетов. Этот этап является наиболее важным, от него зависит работа запускаемых вами скриптов. Я при первой установке не выбрал пакет inetutils (в него входит утилита telnet), из-за чего написанный мной скрипт, использующий telnet, не работал. Тщательно изучите список предлагаемых пакетов и выберите необходимые вам. Я устанавливал из категории Net пакеты inetutils, openssh, openssl, ping, iperf, tftp, proftpd, а из раздела Utils пакеты utils-linux, mc, bzip2, ipcalc.
10. Запускаем ярлык Cygwin Terminal и работаем.
P.S. Для того, чтобы запустить bash скрипт, необходимо дать скрипту нужные права, используя команду:
Вот и все. Теперь можно запускать bash скрипты из windows.
1″ :pagination=»pagination» :callback=»loadData» :options=»paginationOptions»>
Источник
Bash — это оболочка и командный язык Unix, который может запускать файлы Shell Script. Вам не нужно устанавливать Ubuntu или любые другие дистрибутивы Linux, если ваши сценарии не нуждаются в поддержке реального ядра Linux. Мы поделимся обоими методами.
1] Выполнить файл сценария оболочки, используя WSL
Установите WSL или Windows Subsystem для Linux
Перейдите в Настройки → Обновление и безопасность → Для разработчиков. Проверьте переключатель режима разработчика. Ищите «Функции Windows», выберите «Включить или отключить функции Windows».
Прокрутите, чтобы найти WSL, установите флажок и установите его. После этого необходимо перезагрузить компьютер, чтобы завершить установку запрошенных изменений. Нажмите Перезагрузить сейчас. BASH будет доступен в командной строке и PowerShell.
Выполнить файлы сценариев оболочки
На платформе Linux вы обычно используете SH, но здесь вам нужно использовать BASH. Тем не менее, BASH в Windows имеет свои ограничения, поэтому, если вы хотите выполнить в среде Linux, вам нужно установить Ubuntu или что-то подобное.
2] Выполнить сценарий оболочки, используя Ubuntu в Windows 10
Убедитесь, что у вас установлен Ubuntu или любой другой дистрибутив Linux. Ubuntu смонтирует или сделает все ваши каталоги Windows доступными в /mnt. Таким образом, диск C доступен по адресу /mnt/C. Так что если рабочий стол будет доступен по адресу /mnt/c/users/ /desktop.
Теперь следуйте этим шагам
Поскольку Linux теперь доступен в Windows, вам не нужно использовать какие-либо сторонние приложения, такие как Cygwin. WSL должно быть достаточно для большинства сценариев, чтобы помочь вам запустить сценарий оболочки в Windows 10.
Источник
Как в Windows 10 запускать SH-скрипты без подсистемы Bash
Большинству пользователей так или иначе приходилось сталкиваться со скриптами – мини-программами, используемыми обычно для чисто утилитарных целей. Наиболее распространены пакетные файлы CMD и BAT, однако иногда попадаются и другие типы скриптов, например, SH – сценарии, используемые прикладными программами в Bash. Несмотря на то, что предназначаются такие скрипты для Linux, благодаря интеграции подсистемы Bash они запросто могут быть выполнены и в Windows 10. Впрочем, если вы без подготовки попробуете запустить в «десятке» пакетный файл SH, то у системы не получится его обработать.
Чтобы иметь возможность запускать в среде Windows SH-сценарии, вам нужно ставить подсистему Linux. Но можно пойти и другим путем, установив альтернативные интерпретаторы, например, Git Bash или Cygwin. Они позволяют компилировать и запускать Unix и Linux-сценарии в Windows, причем как в 64-разрядной, так и в 32-разрядной версии системы.
Git Bash
Приложение Git Bash доступно для скачивания с сайта разработчика git-scm.com/downloads. Скачав версию для Windows вашей разрядности, установите программу, проигнорировав многочисленные настройки в окне мастера (менять их нет смысла). После запуска приложения вы увидите окно командной строки, очень похожей на окно стандартной консоли CMD, только с другим приглашением ввода.
Теперь, чтобы запустить SH-скрипт, перетащите его в окно консоли и нажмите ввод. Вот и всё, командный файл будет исполнен.
А еще вы можете открыть консоль Git Bash в любом каталоге, выбрав в контекстном меню Проводника, куда интерпретатор интегрируется при установке, опцию «Git Bash Here». В этом случае скрипты запускаются командой sn name, где name – имя скрипта.
Cygwin
Процедура установки приложения Cygwin, доступного для скачивания по ссылке www.cygwin.com, несколько отличается. В окне мастера-установщика вам нужно будет выбрать загрузку файлов из интернета, затем указать сервер (подойдет любой), место установки (по умолчанию корень диска C) и пакеты установки. Здесь всё можно оставить по умолчанию либо выбрать Full в выпадающем меню View.
Подобно Git Bash, Cygwin представляет собой командную строку, из которой и запускаются SH-скрипты. Да, перетаскивание в ней тоже работает.
Наконец, попробовать запустить SH-скрипт можно в обычной командной строке Windows 10, удалив в Блокноте первую строку #!/bin/bash и изменив расширение файла на BAT или CMD. Однако подобный скрипт отработает только в том случае, если содержащийся в нём код будет понятен интерпретатору CMD.
Источник
В прилетевшем обновлении Windows 10 Creators Update появилась интереснейшая возможность — запускать виндовые программы в этом их линуксе. Официальные примеры меня категорически не устроили — евангелисты Microsoft предложили мне рисовать корову в PowerShell и запускать Notepad из bash. Чё, правда? Это всё до чего вы додумались?
Как человек страстно ждавший возможность запуска exe-файлов внутри WSL, я хочу поделиться опытом правильного использования новой фичи.
Bash on Windows я использую для всякой мелкой механизации — выкачать, распарсить, проанализировать. Взять 10-20 гигов логов и поколдовать над ними в поисках чего нибудь этакого. Взять 200 гигов исходных данных, сделать ВЖУХ и пульнуть пару мегов результатов в базу сайта. Вобщем, обычная бытовуха, как у всех. Разве нет?
Итак, мой опыт
Кейс номер один
Вот то ради чего именно я ждал возможность запуска exe-файлов на WSL.
Имеется некоторое количество веб-сайтов для разных программ, требуется проверить что все ссылки «download» ведут на актуальные версии.
Пропустив этап поиска ссылок и скачивания файлов перейдём к извлечению нужной информации.
Делаем это двумя путями.
Путь первый — обращение к WMIC
В CMD вызов данной информации выглядит вот так:
wmic datafile where name="c:\Windows\System32\cmd.exe" GET /VALUE
/VALUE — что бы получить всю возможную информацию
В bash это выглядит вот так
cmd.exe /C "wmic datafile where name='c:\\Windows\\System32\\cmd.exe' GET /VALUE"
слэшей много и все нужные
Но мне то нужно не просто на экран вывести, а получить и обработать.
Поэтому, в PHP это выглядит вот так:
// имя файла
$file='c:WindowsSystem32cmd.exe';
// получение данных через WMI
$q="/mnt/c/Windows/System32/cmd.exe /C "wmic datafile where name='".addslashes(addslashes($file))."' GET /VALUE"";
$a=exec($q,$b);
$ini=implode("n",$b);
/mnt/c/Windows/System32/cmd.exe — полный путь, что бы наверняка
$b — результат многострочный, поэтому получаем его в виде массива (в $a попадает лишь последняя строчка)
$ini — формат результата совместим с ini-файлом, грех этим не воспользоваться — превращаем полученный массив $b в текст для последующего преобразования с помощью parse_ini_string().
Путь второй — использование Scripting.FileSystemObject
Данной решение я нашёл здесь и немножко допилил.
В исходном варианте был вызов короткого списка с результатами, что меня не устроило
WScript.Echo(objFolder.GetDetailsOf(objItem,-1));
Я заменил эту строчку на цикл извлекающий ВСЕ возможные свойства файла
var folder=objShell.NameSpace(namespace);
for (var i=0; i<0xFFFF; i++)
{
fileinfo=folder.GetDetailsOf(null, i);
if (!fileinfo)
{
break;
}
WScript.Echo( fileinfo+" = "+objFolder.GetDetailsOf(objItem,i) );
}
формат вывода сделан совместимым с ini-файлом.
PHP код, вызывающий bat-файл, получился вот такой
$q1="/mnt/c/Windows/System32/cmd.exe /C "C:\test_exe\test_exe.bat ".addslashes($file).""";
$a1=exec($q1,$b1);
$ini1=implode("n",$b1);
$ini1=iconv("CP866","UTF-8", $ini1);
Почти так же как как в случае с WMI, только приходится перекодировать результат в юникод. ( CP866 — всплакнул )
Склеиваем полученные результаты в единый текст и парсим
$result_ini="[WMIC]n".$ini."n[FileSystemObject]n".$ini1;
$result_arr = parse_ini_string($result_ini, true, INI_SCANNER_RAW);
print_r($result_arr);
Делаем разбиение на секции (второй параметр — true) и во избежании проблем включаем — INI_SCANNER_RAW
ВЖУХ и получаем массив всех возможных свойств файла с которым удобно работать.
~$ cd /mnt/c/test_exe/
/mnt/c/test_exe$ php test_exe.php
Array
(
[WMIC] => Array
(
[AccessMask] => 1179817
[Archive] => TRUE
[Caption] => c:windowssystem32cmd.exe
[Compressed] => FALSE
[CompressionMethod] =>
[CreationClassName] => CIM_LogicalFile
[CreationDate] => 20170318235750.921718+180
[CSCreationClassName] => Win32_ComputerSystem
[CSName] =>
[Description] => c:windowssystem32cmd.exe
[Drive] => c:
[EightDotThreeFileName] => c:windowssystem32cmd.exe
[Encrypted] => FALSE
[EncryptionMethod] =>
[Extension] => exe
[FileName] => cmd
[FileSize] => 271872
[FileType] => Application
[FSCreationClassName] => Win32_FileSystem
[FSName] => NTFS
[Hidden] => FALSE
[InstallDate] => 20170318235750.921718+180
[InUseCount] =>
[LastAccessed] => 20170318235750.921718+180
[LastModified] => 20170318235750.921718+180
[Manufacturer] => Microsoft Corporation
[Name] => c:windowssystem32cmd.exe
[Path] => windowssystem32
[Readable] => TRUE
[Status] => OK
[System] => FALSE
[Version] => 10.0.15063.0
[Writeable] => TRUE
)
[FileSystemObject] => Array
(
[Имя] => cmd.exe
[Размер] => 265 КБ
[Тип элемента] => Приложение
[Дата изменения] => 18.03.2017 23:57
[Дата создания] => 18.03.2017 23:57
[Дата доступа] => 18.03.2017 23:57
[Атрибуты] => A
[Автономность] =>
[Доступность] => Доступен автономно
[Распознанный тип] => Приложение
[Владелец] => TrustedInstaller
[Вид] => Программа
[Дата съемки] =>
[Исполнители] =>
[Альбом] =>
[Год] =>
[Жанр] =>
[Дирижер] =>
[Теги] =>
[Оценка] => Без оценки
[Авторы] =>
[Название] =>
[Тема] =>
[Категории] =>
[Комментарии] =>
[Авторские права] => c Microsoft Corporation. All rights reserved.
[№] =>
[Продолжительность] =>
[Скорость потока] =>
[С защитой] =>
[Камера, модель] =>
[Размеры] =>
[Камера, изготовитель] =>
[Организация] => Microsoft Corporation
[Описание файла] => Windows Command Processor
[Ключевые слова образцов] =>
[Имя программы] =>
[Длительность] =>
[В сети] =>
[Повторяется] =>
[Место] =>
[Адреса необязательных участников] =>
[Необязательные участники] =>
[Адрес организатора] =>
[Имя организатора] =>
[Время оповещения] =>
[Адреса обязательных участников] =>
[Обязательные участники] =>
[Ресурсы] =>
[Состояние собрания] =>
[Свободно/Занято] =>
[Общий размер] => 227 ГБ
[Учетная запись] =>
)
)
К чему был весь этот стрёмнокод? А вот к чему.
Как я уже упомянул ранее, на сайте майкрософта поведали, что теперь мы можем рисовать коров в PowerShell и запускать notepad.exe из баша.
А в обсуждении перевода этого майкрософтовского текста люди выясняют насколько там честный линукс и можно ли на него взгромоздить Докера.
Люди, вы не туда смотрите! Я в bash выполнил PHP-скрипт который через exec() запустил bat-файл в котором JScript создал ActiveXObject.
It’s Kind Of Magic!
А ещё я могу из CMD сделать вот так:
C:test_exe>bash -c "php test_exe.php"
А-а-а-а-а-а!
Кейс номер два
Обновление Windows 10 Creators Update я накатил 6 числа, а на прошлой недели был отвлечён от новой игрушки бухгалтерией. Бухгалтерия запросила оригиналы первички.
Эврика, подумал я и поставил консольную печаталку
Лезем в bash и просто запускаем программу
~$ 2Printer.exe -s "c:2Printer_input*.*"
Результат — из принтера ползут листочки:
(данный скриншот — последующая имитация на виртуальном принтере, но на реальном HP тоже сработало)
В результате имеем:
- программа проявила интерактивность (триалка запросила нажать кнопочку)
- из башевского окошка полезла по своим виндовым путям
- взяла оттуда файлы с русскими названиями
- вызвала офисный редактор через COM-объекты
- отправила результат на принтер
То есть можно не только писать простейшие скриптики, но и использовать сложные программы.
Резюме
Я ещё не до конца осознал что ещё с этим можно делать, но эта штука может гораздо больше чем просто беседа с коровами и запуск LAMP.
Надо просто самому себе разрешить вырваться из дихотомиии «либо Linux, либо Windows» и начать скрещивать ежей и ужей в самых невероятных пропорциях и последовательностях.