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 killbuiltin tidak memiliki -ppilihan 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 timesebenarnya 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 killhanyalah sebuah contoh dan saya ingin solusi umum yang mirip dengan cara awalan dengan commandbuiltin 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 killdi backticks (tidak bisa memasukkannya ke dalam komentar) sedikit lebih pendek.