Saya bingung tentang mengeksekusi izin file yang tidak berperilaku seperti yang saya harapkan. Mungkin karena harapan saya salah. Bagaimanapun:
Saya memiliki file skrip, karena kesederhanaannya hanya disebut s, terletak di ~/bin. Demi contoh ini, file hanya berisi baris berikut:
#!/bin/zsh
echo "Test";
Sangat sederhana.
Saya menavigasi ke ~/bindirektori, dan chmodizin file suntuk 400- yaitu, hanya-baca untuk saya saja. Tidak ada izin eksekusi. Jadi saya mencoba menjalankan skrip dengan memasukkan jalannya, memberikan ini:
% ./s
zsh: permission denied: ./s
Sejauh ini baik. File tidak dapat dieksekusi karena izin yang salah. Izin menabrak hingga 500(mengeksekusi izin diberikan) juga berfungsi dengan baik - dengan izin ini, file mengeksekusi baik:
% ./s
Test
Ini semua seperti yang diharapkan. Tapi kemudian saya chmodizin kembali ke 400(mengeksekusi izin lagi), mencoba sourcefile, dan ini terjadi
% source s
Test
Meskipun izin 400, skrip dijalankan.
Jadi inilah pertanyaan saya: mengapa ./sgagal (seperti seharusnya) tetapi source sdijalankan secara normal? Tidakkah ini mengalahkan seluruh tujuan dari izin eksekusi?
Atas 400izin, sh sdan zsh sjuga bekerja.
Saya yakin saya melakukan atau memahami sesuatu yang sangat salah di suatu tempat. Dapatkah seseorang titik di mana saya, dan menjelaskan perbedaan antara ./s, source s, sh sdan zsh s?