Apakah ada cara untuk bersumber skrip shell untuk mengetahui jalur ke dirinya sendiri? Saya terutama peduli dengan bash, meskipun saya memiliki beberapa rekan kerja yang menggunakan tcsh.
Saya kira saya mungkin tidak memiliki banyak keberuntungan di sini, karena sumber menyebabkan perintah dieksekusi di shell saat ini, jadi $0
masih merupakan permintaan Shell saat ini, bukan skrip yang bersumber. Pikiran terbaik saya saat ini adalah melakukan source $script $script
, sehingga parameter posisi pertama berisi informasi yang diperlukan. Adakah yang punya cara yang lebih baik?
Untuk lebih jelasnya, saya sumber skrip, tidak menjalankannya:
source foo.bash
Jawaban yang Diterima:
Dalam tcsh
, $_
di awal skrip akan berisi lokasi jika file itu bersumber dan $0
berisi itu jika dijalankan.
#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
echo "run $0"
endif
Di Bash:
#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"