Meminta skrip bash


0

Memiliki skrip sederhana:

echo "file: $0"

ketika dipanggil seperti:

bash myscript.sh

atau

./myscript.sh

memberikan nama file skrip ( file: myscript.sh) seperti yang diharapkan tetapi ketika dipanggil:

sumber myscript.sh

atau

. ./myscript.sh

memberikan nama shell ( bash) alih-alih nama file skrip.

Kenapa seperti ini?

Jawaban:


2

Panggilan pertama akan memulai instance baru dari bash untuk menafsirkan skrip, artinya bash akan diatur $0ke jalurnya.

Panggilan kedua akan memperlakukan file sebagai file yang dapat dieksekusi dan menjalankannya, jadi $0akan mengarah ke sana.

Dua panggilan terakhir akan memuat file ke instance bash saat ini, jadi $0akan menunjuk ke sana.

NB: # 2 membutuhkan file untuk dapat dieksekusi, # 1, # 3 dan # 4 tidak.


1
# 1 tidak memerlukan file untuk dapat dieksekusi, hanya # 2 yang perlu
Eric Renouf

Membaca dengan lebih cermat akan membantu - terima kasih atas tangkapannya!
Eugen Rieck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.