Saya memiliki file dalam $ HOME / bin (sebelum Anda bertanya, ya, itu ada di jalur saya) yang disebut test
sudah saya konfirmasi dapat dieksekusi dengan baik ketika saya menjalankannya dengan path lengkap ke file tersebut. Namun, saya mendapatkan masalah yang sangat aneh ketika saya tidak menjalankannya dengan cara ini. Ketika saya hanya menjalankan test
di terminal, tidak melakukan apa-apa dan kembali segera. Saya tahu ini bukan masalah menemukan file karena beberapa alasan:
Tidak ada pesan kesalahan. Biasanya jika file tidak dapat ditemukan atau tidak dapat dieksekusi pesan akan dicetak mengatakan demikian.
Menjalankan
which test
masih mengembalikan jalur file yang benar.Mungkin yang paling aneh dari semuanya - skrip berfungsi dengan baik saat dijalankan
strace
. Saya mencoba menggunakanstrace
untuk melihat apakah saya bisa mengetahui apa yang sedang terjadi tetapi ketika saya menjalankannyastrace
, itu berfungsi seperti yang diharapkan dengan 0 masalah.
sumber
type
, bukanwhich
. Lihat Mengapa tidak menggunakan "yang"? Lalu apa yang harus digunakan?Jawaban:
test
adalah nama yang disayangkan untuk digunakan, ini adalah utilitas standar untuk pengujian bersyarat . (Ini sebenarnya perintah yang sama dengan[
diif [ ... ]
, itu hanya terlihat seperti hal sintaksis, tetapi benar-benar hanya perintah normal.)test
juga bawaan di misalnya Bash, jadi menjalankan hanyatest
tidak pernah mencari biner Anda dari path.test
tanpa argumen hanya mengembalikan 1 (false).Menjalankan
strace test
tidak melibatkan shell builtin, karenastrace
tidak mengimplementasikan utilitas itu sendiri. Itu hanya menggunakan apa yang ditemukan di blog AndaPATH
. Perhatikan bahwa Anda mungkin memiliki standartest
di/bin/test
atau/usr/bin/test
, jadi jika itu akan menjadi yang pertamaPATH
,strace
jalankan jalankan itu.Di Bash saya,
which
juga merupakan perintah eksternal, sehingga tidak memiliki ide tentang builtin. Di sisi lain, paratype
perintah adalah builtin ke shell, dantype test
akan menunjukkan bahwatest is a shell builtin
.Lihat juga: Mengapa tidak menggunakan "yang"? Lalu apa yang harus digunakan?
sumber