Entah apa yang saya tanyakan di sini sangat tidak lazim / tidak konvensional / berisiko, atau keterampilan Google-fu saya tidak cukup ...
Dalam bash
skrip shell, apakah ada cara mudah untuk mengetahui apakah skrip tersebut diperoleh dari skrip shell lain, atau apakah skrip dijalankan dengan sendirinya? Dengan kata lain, apakah mungkin untuk membedakan antara dua perilaku berikut?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Apa yang saya pikirkan lakukan adalah membuat skrip shell yang berisi bash
fungsi yang dapat dibuat tersedia saat bersumber. Ketika skrip ini dijalankan dengan sendirinya, saya ingin skrip ini melakukan operasi tertentu, berdasarkan pada fungsi yang ditentukan juga. Apakah ada semacam variabel lingkungan yang dapat diambil skrip shell ini, misalnya
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Lebih disukai, saya mencari solusi yang tidak memerlukan skrip penelepon untuk mengatur variabel flag.
sunting : Saya tahu perbedaan antara sumber dan dan menjalankan skrip, apa yang saya coba temukan di sini apakah mungkin untuk mengetahui perbedaan dalam skrip yang sedang digunakan (dalam kedua cara).
.
perintah sama sekali, tetapi tentang mendeteksi apakah skrip telah bersumber atau berjalan secara normal (yaitu dalam subkulit).