Я недавно изучал bash и shell и пытался выяснить, как git может создать терминальную команду, которая запускает сценарии C в текущем каталоге, например, git init, git push / pull и т. Д.
Я пытался смоделировать его на python, создавая исполняемый скрипт python в моем домашнем каталоге,
#!/usr/bin/env python
import os
print("current_dir: ",os.getcwd()) #prints /Users/usr/folder/script.py
Затем я создаю файл .command, который вызывает скрипт python
cd
cd FOLDER/
python3 SCRIPT.py
и редактирование профиля bash для экспорта переменной для запуска файла .command.
export mycommand=/Users/urn/folder/command.command
Хотя это даже не близко к тому, как git достигает своей командной строки. Например, когда я запускаю мой скрипт, на самом деле это не терминальная команда, это просто переменная окружения, поэтому $.
$mycommand
Во-вторых, это идет в каталог файла python и запускает скрипт с этим каталогом, поэтому выходные данные всегда будут одинаковыми
/Users/usr/folder/script.py
Хотя в git он запускает файл в текущем каталоге. Поэтому оператор print будет меняться в зависимости от каталога терминала.
Как я могу создать свою собственную «терминальную команду», такую как git init, для запуска моего скрипта python в любом каталоге, в котором я нахожусь. PS, я на Mac.
Любая помощь будет принята с благодарностью:)