Ответ 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
оказали влияние на текущую оболочку, то вы хотите использовать сценарий вместо выполнения.