Saya bertanya-tanya apakah dua cara menjalankan skrip bash ini setara?
. ./myScript.sh source myScript.sh
- Apakah keduanya menjalankan konten skrip alih-alih menjalankan skrip, yaitu tidak membuat subkulit untuk menjalankan skrip?
bash
shell
shell-script
Tim
sumber
sumber
man .
,man source
atau apa pun yang saya belum tahu.type .
danhelp .
man $SHELL
,/source
Jawaban:
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 menggunakansource
.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
.
vssource
, tetapi dalam contoh Anda,tidak identik dengan
karena sementara
.
dansource
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
.sumber
/
shell-dependen dan untukbash
danzsh
tergantung pada apakah mode POSIX diaktifkan atau tidak. Juga perhatikan bahwa dalam banyak implementasi ksh,.
berperilaku berbeda darisource
.Ya, mereka setara. Tidak ada perbedaan fungsional;
.
hanya sinonim bawaan untuksource
.(Edit: Rupanya ini hanya berlaku untuk
bash
danzsh
Beberapa kerang ringan tidak memiliki.source
, Hanya.
ditentukan oleh POSIX sehinggaksh
,dash
,ash
, dll mungkin tidak memilikisource
Lihat. Jawaban jw013 ini untuk info.)sumber
$ alias .
hasilnyabash: alias: .: not found
.