Fungsi ini ada di salah satu pengguna saya ~ / .bashrc:
function rm()
{
ls $*
echo "rm?"
read ans
if [ "$ans" == 'y' ]; then
/bin/rm $*
fi
}
Dalam skrip ksh saya yang harus dijalankan oleh pengguna, saya memiliki baris seperti ini:
[[ "$KEEP" = "" ]] && \rm $FILE
Meskipun backslash lolos dari alias yang ditentukan pengguna, itu tidak menghentikan skrip dari menjalankan fungsi yang ditentukan pengguna dengan nama yang sama. Akibatnya, fungsi rm () pengguna saya dipanggil alih-alih fungsi sistem.
Saya menemukan ini pertanyaan superuser pertanyaan & respon, tetapi resolusi hanya berlaku untuk fungsi builtin, bukan perintah sistem.
Apa yang terbaik untuk menegakkan perintah rm agar tidak dipanggil, dan bukan alias atau fungsi? Haruskah saya menentukan path lengkap ke rm dan setiap perintah sistem yang ingin saya pastikan dijalankan dengan benar? Apakah ada cara yang lebih baik?
env
rute. Selain itu, Anda dapat menentukan lokasi setiap alat sekali dan menyimpannya dalam variabel, misalnyaRM=$( /usr/bin/env which rm ); [much more code]; $RM some_file;
. Anda juga dapat mengubah cara skrip Anda dijalankan. Biasanya, fungsi dan alias tidak diwariskan, jika tidak mereka akan merusak skrip setiap saat.