Nie ma na to żadnego polecenia międzyplatformowego. Podczas gdy macOS używa Unixa pod spodem, aplikacje terminalowe pod macOS i Linuksem są zupełnie inne, a użytkownik może mieć zainstalowane inne terminale. W systemie macOS może to być Terminal.app, iTerm2 lub inne, a pod Linuksem możesz mieć osoby obsługujące Terminal GNOME, Konsole, Terminator itp. - lub nawet nie działające w środowisku graficznym. Czy zastanawiałeś się nad tym?
Sposoby otwierania aplikacji również różnią się w zależności od systemu operacyjnego. Musisz napisać osobne funkcjonalności dla obu systemów operacyjnych.
System operacyjny Mac
W systemie macOS wszystko, czego potrzebujesz, aby uruchomić Terminal.app i uruchomić skrypt, to:
osascript -e 'tell application "Terminal" to do script "/path/to/script.sh"'
Myślę, że możesz uzyskać domyślny terminal (jeśli nie jest to Terminal.app), sprawdzając domyślne skojarzenia plików, ale jest to trochę uciążliwe bez narzędzi innych firm, takich jak duti
(Użyj Homebrew do brew install duti
), gdzie możesz:
terminal=$(duti -x .command | head -n 1)
osascript -e "tell application \"$terminal\" to do script \"/path/to/script.sh\""
Ale sądzę duti
, że funkcjonalność można poddać inżynierii wstecznej, sprawdzając jej kod źródłowy . Aby uzyskać więcej informacji, zobacz ten post .
Możesz także utworzyć .command
plik i otworzyć go za pomocą open
:
touch example.command
echo "echo foo" > example.command
chmod +x example.command
open example.command
Spowodowałoby to automatyczny wybór emulatora terminala zdefiniowanego przez użytkownika.
Linux
W systemie Linux zwykle można uzyskać dostęp do domyślnego terminala za pomocą x-terminal-emulator
:
x-terminal-emulator -e "/path/to/script"
Upewnij się, że skrypt jest rzeczywiście wykonywalny ( chmod +x
).