Выполнять команды из .bat файла на Git Bash Terminal

Я новичок в Git bash.

Просто из любопытства пытается создать файл .bat, содержащий команды (не знаю, поддерживает ли Git Bash файл .bat)

Что я хочу достичь, просто перетащите этот .bat файл на Git Bash terminal и команды в файле выполняются (возможно ли это?).

Мои команды в .bat файле

cd "C:\Users\USER\abc\xyz"
cd "C:\Users\USER\abc\xyz\pqr"
export HOME="C:\Users\USER\some_directory"
export HOME2="C:\Program Files\directoy"

Ответ 1

  Я хочу просто перетащить этот файл .bat в терминал Git Bash, и команды в файле будут выполнены (возможно ли это?).

Это невозможно, и, вероятно, никогда не будет, потому что это не естественный UX. Перетаскивание файла из проводника в терминал Git Bash должно привести к абсолютному пути к файлу в терминале. Затем вы можете нажать Enter, чтобы выполнить его. Естественный способ выполнить файл в проводнике - дважды щелкнуть по нему. (Для проводника файлов может потребоваться настройка, позволяющая запускать файлы .bat и .sh двойным щелчком мыши.)

Мои команды в .bat файле

cd "C:\Users\USER\abc\xyz"
cd "C:\Users\USER\abc\xyz\pqr"
export HOME="C:\Users\USER\some_directory"
export HOME2="C:\Program Files\directory"

С одной стороны, этот сценарий выглядит искусственно: cd /some/abs/path, за которым следует cd /some/other/abs/path, - бессмысленное утверждение.

С другой стороны, расширение .bat должно использоваться для сценариев оболочки DOS, но команда export не существует в DOS (она существует в Bash). Таким образом, ваш пример должен быть скриптом .sh, а не скриптом .bat.

Наконец, важно понимать разницу между выполнением сценария и поиском сценария:

  • Когда вы выполняете скрипт, например, с помощью path/to/script.sh, команды в нем выполняются в дочернем процессе. Таким образом, команды, которые изменяют среду выполнения, например, изменяют каталог или переменные, будут применяться только к дочернему процессу. Другими словами, эффект команд cd и export не будет виден при выходе из сценария.

  • При создании сценария, например, с помощью source path/to/script.sh (или . path/to/script.sh), команды в нем выполняются в текущем процессе. Таким образом, команды, которые изменяют среду выполнения, например, изменяют каталог или переменные, будут применяться к текущему процессу.

Другими словами, если вы хотите, чтобы команды cd и export оказали влияние на текущую оболочку, то вы хотите использовать сценарий вместо выполнения.