Запуск сценария bash-оболочки в Windows из Notepad++ с использованием NppExec (и Cygwin)

Я пытаюсь восстановить, как выполнить оболочку Bash .sh файл на моем компьютере с Windows из Notepad++, используя NPPExec. (Я успешно делал это раньше, но мой жесткий диск вышел из строя, и я не помню, как я делал это раньше.)

Когда он работал раньше, я запускал скрипт NPPExec, который вызывал .sh файл, и он показал мне вывод консоли обработки файла.sh в Notepad++, как если бы он обрабатывал в cygwin.

Это пример файла.sh, который я пытаюсь заставить работать:

message="Testing"
echo $message

Этот файл находится в корне C:.

Неудачные попытки:

Ни один из следующих трех методов не работает:

  • Выполнение: C:\nppexec.sh

Отклик:

CreateProcess() failed with error code 193:
%1 is not a valid Win32 application.
  • Выполнение: npp_exec C:\nppexec.sh

Отклик:

message="Testing"
CreateProcess() failed with error code 2:
The system cannot find the file specified.    
$message
  • Добавление #! /bin/bash в файл.sh в качестве первой строки просто вызывает дополнительную ошибку при запуске npp_exec:

    NPP_EXEC: C:\nppexec.sh
    #! /bin/bash
    CreateProcess() failed with error code 2:
    The system cannot find the file specified.
    

4 ответа

Решением было вызвать bash напрямую:

C:\cygwin\bin\bash --login -c "command.sh"

У меня такая же ошибка при попытке выполнить командный файл в Windows.

Я решил проблему, выполнив сначала команду cmd в консоли notepad ++, затем E:\test.bat

У меня также есть mksnt, установленный на моем оконном ПК.

запустив сначала bash в консоли notepad ++, тестовая оболочка теперь работает хорошо

bash
C:\nppexec.sh

Одним нажатием клавиши я хотел выполнить сценарий оболочки активной вкладки, используя Cygwin в блокноте.

После нескольких часов поиска в Интернете и экспериментов я наконец-то придумал

  1. установить плагин NppExec
  2. Хит F6
  3. вставьте следующий код:

    //save the file NPP_SAVE //redirect console output to $(OUTPUT) & silent mode npe_console v+ -- //convert winpath to cygpath D:\cygwin64\bin\bash -lc "cygpath \"$(FULL_CURRENT_PATH)\" //execute the file D:\cygwin64\bin\bash -lc "$(OUTPUT)"

Надеюсь, что сэкономить время для некоторых людей

Используйте эту команду Выполнить

C:\cygwin64\bin\bash.exe -l -c "cd \"$0\" ; echo $@; \"./$1\"; exec bash;" "$(CURRENT_DIRECTORY)" "$(FILE_NAME)"

Вы можете сохранить эту команду для последующего использования из диалогового окна "Выполнить".

Другие вопросы по тегам