-
Saya bertanya-tanya apakah dua cara berikut menjalankan skrip bash
setara?. ./myScript.sh source myScript.sh
- Apakah keduanya menjalankan konten skrip alih-alih menjalankan skrip, yaitu tidak membuat subkulit untuk menjalankan skrip?
Jawaban yang Diterima:
-
Mereka setara dalam bash karena mereka melakukan hal yang persis sama. Sebaliknya,
source
lebih panjang 5 karakter dan tidak portabel untuk shell khusus POSIX atau Bourne sedangkan.
(titik) adalah, jadi saya tidak pernah repot menggunakansource
. -
Itu benar – sumber file menjalankan perintah di shell saat ini dan itu akan mempengaruhi lingkungan shell Anda saat ini. Anda masih dapat meneruskan argumen ke file sumber dan bash akan benar-benar terlihat di
$PATH
untuk nama file seperti perintah biasa jika tidak mengandung garis miring.
Tidak terkait dengan pertanyaan awal .
vs source
, tetapi dalam contoh Anda,
. ./myScript.sh
tidak identik dengan
source myScript.sh
karena while .
dan source
secara fungsional identik, myScript.sh
dan ./myScript.sh
tidak sama. Sejak ./myScript.sh
berisi garis miring, itu ditafsirkan sebagai jalur dan shell hanya menggunakan ./myScript.sh
. Namun, myScript.sh
tidak memiliki garis miring sehingga shell melakukan $PATH
cari dulu. 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
.