Apakah mungkin menjalankan bash builtin dari skrip non bash?

1

Apakah mungkin untuk menjalankan misalnya history -wuntuk mendasari bash shell dari skrip ruby?
Atau lebih baik mungkinkah menjalankan perintah builtin untuk bash shell hanya dengan mengetahui pidnya?

Satu-satunya cara yang saya temukan adalah untuk menjebak sinyal seperti trap "history -w" SIGUSR1dan kemudian mengirim sinyal ke proses, tetapi saya tidak yakin itu adalah praktik yang baik dan USR1 tidak digunakan oleh bash, juga cara ini saya dapat menjalankan maks 2 perintah (USR1 dan USR2) . Dan saya harus mendefinisikan perangkap sebelum menggunakannya.

Saya di Mac jadi tidak ada SIGRTMIN..SIGRTMAX.

Mengapa saya membutuhkan ini:

Saya membuat skrip ruby ​​shell dtyang membuka tab baru di sebelah saat ini dengan dir berfungsi yang sama, kemudian saya menulis newTabHere.app yang dapat melakukan hal yang sama tetapi dapat melakukan ini bahkan jika tab sedang sibuk menjalankan sesuatu (saya menyebutnya menggunakan Spark ). Tetapi akan jauh lebih baik jika sejarah juga akan sama di tab duplikat dan karena dtsaya hanya dapat menggunakan alias dt='history -w; dt', tetapi bagaimana saya bisa melakukan ini newTabHere.app?

cekcok
sumber
@Aniel: Saya mengklarifikasi mengapa saya membutuhkan ini
tig

Jawaban:

1

Tidak ada cara lain untuk membuat shell mengeksekusi perintah, selain mengetikkan pada input standarnya. Hal termudah adalah melakukan bash memeriksa beberapa file, atau menjalankan history -w, sebagai bagian dari PROMPT_COMMAND(perintah yang dijalankan sebelum setiap prompt).

Saya pikir apa yang Anda kejar sebenarnya adalah ekspor sejarah Real-time di antara jendela terminal Bash , dan mungkin sejarah bash yang lebih baik .

Anda mungkin juga mempertimbangkan untuk menggunakan zsh (tersedia di sebagian besar Linux / OSX / repositori paket unix lainnya) dan beserta opsiinc_append_history - share_history opsinya .

Gilles
sumber
zshmungkin baik, tetapi tidak dapat menangani input utf-8 dan ini menghentikan saya segera (meskipun saya tahu itu dapat mencetak karakter)
tig
@tig: UTF-8 didukung di zsh 4.3 (yang meskipun diberi label "pengembangan" jelas "cukup stabil": tidak crash atau apa pun, dan rilis kecil baru bahkan tidak memiliki kebiasaan yang tidak kompatibel perubahan).
Gilles