OS X membuka terminal baru dari baris perintah yang bekerja di linux juga

0

Saya membuat skrip npm untuk proyek berbasis simpul, dan saya ingin membuat skrip yang membuka terminal baru, dan kemudian menjalankan perintah itu di sana. Saya menggunakan mac sendiri, tetapi pengembang lainnya mungkin menggunakan linux.

Sekarang saya ingin membuat perintah yang lintas env dengan cara yang berfungsi di kedua lingkungan. Saya tahu OS X didasarkan pada unix, jadi orang bisa berpikir karena ini ada cara mudah untuk membuat skrip shell env shell yang membuka terminal.

EDIT: Saya tidak ingin ada klik mouse. Hanya skrip shell, yang membuka terminal baru di os x dan linux.

Ville Miekk-oja
sumber

Jawaban:

2

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 dutifungsionalitas dapat direkayasa ulang dengan memeriksa kode sumbernya . Untuk info lebih lanjut, lihat posting ini .

Anda juga dapat membuat .commandfile 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).

slhck
sumber