Используйте / добавьте сценарий оболочки в msysgit - PullRequest
1 голос
/ 25 января 2012

Я использую msysgit в Windows и написал простой сценарий оболочки, который я хотел бы использовать.Я добавил папку, в которой находится файл .sh, в переменную PATH на моем компьютере с Windows, но когда я хочу использовать свой сценарий, я должен набрать rd.sh вместо простого rd.

Как использоватьэто просто ссылаясь на его имя rd, а не полное имя файла с расширением .sh (rd.sh)?

Ответы [ 2 ]

5 голосов
/ 26 января 2012

Оболочкой, поставляемой с msysgit, является bash, которая работает в эмулируемой Unix-подобной среде.

Если вы запускаете сценарий из оболочки bash, вам нужно ввести имя сценария, которое в отношении Unix-подобной среды равно rd.sh. .sh не имеет особого значения в среде Unix; это просто последние три символа имени файла. Первая строка скрипта должна быть #!/bin/sh или #!/bin/bash; это известно как "шебанг" .

С другой стороны, если вы хотите запустить его из Windows (скажем, из командной строки cmd.exe), то расширение .sh используется Windows, чтобы определить, как его выполнить, и вы можете вызвать его. как rd, если (a) он находится в каталоге вашего %PATH% и (b) Windows настроена (в параметрах папки и / или путем установки %PATHEXT%) для использования sh или bash для запуска .sh файлов.

Если вы хотите иметь возможность запускать один и тот же сценарий из любой среды, вы можете создать символическую ссылку, которая будет распознаваться в эмулированной среде, подобной Unix. Например, если rd.sh находится в $HOME/bin, то это:

ln -s $HOME/bin/rd.sh $HOME/bin/rd

создаст соответствующую символическую ссылку. (Вы можете сделать rd копию rd.sh, но тогда изменения одного не будут применяться к другому.)

Если вам нужно только запустить его из bash, просто назовите его rd вместо rd.sh; как я уже говорил, что касается bash, расширение .sh является лишь частью имени и не имеет особого значения. Это строка #!, а не расширение .sh, которая сообщает bash, как выполнить скрипт.

(Ну, строго говоря, это не bash, который обрабатывает #!. В реальных системах Unix или Linux он обрабатывается ядром; я не уверен, какой именно механизм находится под msysgit.)

1 голос
/ 25 января 2012

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

Однако, поскольку в Windows нет встроенной поддержки сценариев оболочки (кроме пакетных файлов и т. П., Очевидно), я не 100% уверен, что это сработает.

...