-
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,
sourcelebih 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
$PATHuntuk 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 .