Tidak ada perintah lintas-platform lakukan untuk itu. Sementara macOS menggunakan Unix di bawahnya, aplikasi terminal di bawah macOS dan Linux benar-benar berbeda, dan pengguna mungkin memasang terminal berbeda. Di bawah macOS, itu bisa Terminal.app, iTerm2 atau yang lain, dan di Linux Anda bisa membuat orang menjalankan Terminal GNOME, Konsole, Terminator, dll. - atau bahkan tidak menjalankan lingkungan grafis sama sekali. Sudahkah Anda mempertimbangkan hal itu?
Cara untuk membuka aplikasi juga berbeda di antara OS. Anda harus menulis fungsionalitas terpisah untuk kedua sistem operasi.
macOS
Di bawah macOS, yang Anda perlukan untuk meluncurkan Terminal.app dan menjalankan skrip adalah:
osascript -e 'tell application "Terminal" to do script "/path/to/script.sh"'
Saya pikir Anda bisa mendapatkan terminal default (jika bukan Terminal.app) dengan mengaitkan asosiasi file default, tetapi sedikit rumit tanpa alat pihak ketiga seperti duti
(Gunakan Homebrew untuk brew install duti
), di mana Anda akan melakukan:
terminal=$(duti -x .command | head -n 1)
osascript -e "tell application \"$terminal\" to do script \"/path/to/script.sh\""
Tapi saya kira duti
fungsionalitas dapat direkayasa ulang dengan memeriksa kode sumbernya . Untuk info lebih lanjut, lihat posting ini .
Anda juga dapat membuat .command
file dan membukanya melalui open
:
touch example.command
echo "echo foo" > example.command
chmod +x example.command
open example.command
Ini akan secara otomatis memilih emulator terminal yang ditentukan pengguna.
Linux
Di Linux, biasanya Anda dapat mengakses terminal default dengan x-terminal-emulator
:
x-terminal-emulator -e "/path/to/script"
Pastikan skrip benar-benar dapat dieksekusi ( chmod +x
).