Saya menggunakan Bash sebagai shell interaktif saya dan saya bertanya-tanya apakah ada cara mudah untuk membuat Bash menjalankan perintah sistem alih-alih perintah shell builtin dalam kasus di mana mereka berdua memiliki nama yang sama.
Sebagai contoh, gunakan sistem kill
(dari util-linux
) untuk mencetak id proses (pid) dari proses yang disebutkan (es) alih-alih mengirim sinyal:
$ /bin/kill -p httpd
2617
...
Tanpa menentukan path lengkap dari perintah sistem, Bash builtin digunakan sebagai ganti perintah sistem. The kill
builtin tidak memiliki -p
pilihan sehingga perintah gagal:
$ kill -p httpd
bash: kill: p: invalid signal specification
Saya mencoba jawaban yang tercantum di Make bash menggunakan perintah `time` eksternal daripada built-in shell tetapi kebanyakan dari mereka hanya bekerja karena time
sebenarnya kata kunci shell - bukan builtin shell .
Selain menonaktifkan Bash bawaan untuk sementara enable -n kill
, solusi terbaik yang saya lihat sejauh ini adalah menggunakan:
$(which kill) -p httpd
Apakah ada cara lain yang lebih mudah (melibatkan lebih sedikit pengetikan) untuk mengeksekusi perintah eksternal daripada menggunakan shell?
Catatan itu kill
hanyalah sebuah contoh dan saya ingin solusi umum yang mirip dengan cara awalan dengan command
builtin mencegah fungsi yang memiliki nama yang sama dengan perintah eksternal dijalankan. Dalam kebanyakan kasus, saya biasanya lebih suka menggunakan versi builtin karena menghemat forking proses baru dan beberapa kali builtin memiliki fitur yang tidak dimiliki perintah eksternal.
$(…)
- lihat ini , ini , dan ini .
which kill
di backticks (tidak bisa memasukkannya ke dalam komentar) sedikit lebih pendek.