Cmder Bash скрипт выполняется

Я создал базовый скрипт в Windows.

#!/bin/bash

echo Hello

Я использую Cmder, производную ConEmu. Я пытался изменить привилегии с помощью chmod, но они одинаковы. Я не знаю, как я могу выполнить этот скрипт. Обычный способ Linux, который: ./hello.sh не работает, и ввод только hello.sh заставляет Windows пытаться открыть его, что плохо, так как я хочу это в консоли. Как выполнить этот скрипт в ConEmu/Cmder?

3 ответа

Я заметил, что ты можешь бежать bash из cmder. Так что я мог бы сделать это так:

> bash
$ ./yourScript.sh

или проще

> cat yourScript.sh | bash

Отказ от ответственности: новичок в cmder (только что скачал его) и сам Linux.

Это работает так же, как на оболочках Unix

sh path/to/your/script.sh

На моем собственном экземпляре Cmder, bash [filename] работает просто отлично, и я считаю, что намного проще:

C:\Users\Conor O'Brien
λ type test.sh
echo Hello

C:\Users\Conor O'Brien
λ bash test.sh
Hello

Если вы хотите иметь возможность запускать скрипт, просто набрав его имя, обходной путь - создать псевдоним и поместить его в свой .bashrc такие как:

alias scriptName="bash /pathToTheScript/yourScript.sh"

Или вы можете найти скрипт внутри вашего .bashrc и сделать его доступным через функцию:

source /pathToTheScript/yourScript.sh

где скрипт:

#!/bin/bash
function your_function()
{
yourCode
}

Если у вас нет времени, перейдите к заключению ниже:

TL: DR: Здесь я играю с "Cmder > bash" в Windows, чтобы создать глобальный скрипт:

Я создал внешний скрипт:

a@DESKTOP /c/Scripts/
λ vi test.sh

с содержанием

#!/bin/bash
echo 'Can you see me now?'

он может быть выполнен из той же папки:

a@DESKTOP /c/Scripts/
λ ./test.sh
Can you see me now?

при создании ссылки на simbolink:

λ ln -s /c/Portables/Scripts/GlobalesBash/test.sh /bin/mytest

кажется, что он работает нормально, называя его только именем:

λ mytest
Can you see me now?

но если исходный файл будет изменен:

λ cat test.sh
#!/bin/bash
echo 'Yes, I see you'

изменения не отражаются по ссылке:

λ mytest
Can you see me now?

Вывод:

так что лучше всего создать скрипт прямо в папке / bin:

λ cd /bin
λ vi aloha
λ cat aloha
echo 'aloha!!!'

а также #!/bin/bash даже не требуется с Cmder в Windows, и он успешно выполняется из любого места в bash Cmder:

λ cd /c
a@DESKTOP /c
λ aloha
aloha!!!

Вы можете поставить свой .sh файлы в $CMDER_ROOT/config/profile.d/*.shкаталог, как объясняют здесь документы

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