Mereka setara dalam bash dalam hal mereka melakukan hal yang persis sama. Di sisi lain, source
adalah 5 karakter lebih panjang dan tidak portabel untuk shell POSIX-only atau Bourne sedangkan .
(dot) adalah, jadi saya tidak pernah repot-repot menggunakan source
.
Itu benar - sumber file menjalankan perintah di shell saat ini dan itu akan mempengaruhi lingkungan shell Anda saat ini. Anda masih bisa meneruskan argumen ke file bersumber dan bash akan benar-benar mencari $PATH
nama file seperti perintah normal jika tidak mengandung garis miring.
Tidak terkait dengan pertanyaan asli .
vs source
, tetapi dalam contoh Anda,
. ./myScript.sh
tidak identik dengan
source myScript.sh
karena sementara .
dan source
secara fungsional identik, myScript.sh
dan ./myScript.sh
tidak sama. Karena ./myScript.sh
mengandung garis miring, itu ditafsirkan sebagai jalur dan shell hanya menggunakan ./myScript.sh
. Namun, myScript.sh
tidak memiliki garis miring sehingga shell melakukan $PATH
pencarian terlebih dahulu. Ini adalah perilaku standar yang ditentukan POSIX untuk .
. Sebagian besar shell default untuk ini meskipun mereka dapat menambahkan ekstensi (seperti mencari di direktori kerja saat ini setelah pencarian jalur) atau opsi untuk mengubah perilaku .
/ source
.