/ Source ~ / .profile dosyasını yeniden yüklemeye çalışırken birkaç sorun ortaya çıkıyor. [Bu, Ubuntu linux'a atıfta bulunur - bazı durumlarda komutların ayrıntıları farklı olacaktır]
- Bunu doğrudan terminalde mi yoksa bir komut dosyasında mı çalıştırıyorsunuz?
- Bunu bir komut dosyasında nasıl çalıştırırsınız?
Ad. 1)
Bunu doğrudan terminalde çalıştırmak, alt kabuğun oluşturulmayacağı anlamına gelir. Yani iki komuttan birini kullanabilirsiniz:
source ~/.bash_profile
veya
. ~/.bash_profile
Her iki durumda da bu, ortamı .profile dosyasının içeriğiyle güncelleyecektir.
Reklam 2) Herhangi bir bash betiğini arayarak da başlatabilirsiniz.
sh myscript.sh
veya
. myscript.sh
İlk durumda bu, sisteminizin ortam değişkenlerini etkilemeyecek bir alt kabuk oluşturacak ve bunlar yalnızca alt kabuk sürecine görünecektir. Subshell komutu tamamlandıktan sonra dışa aktarımların hiçbiri vb. Uygulanmayacaktır. BU ORTAK BİR HATA OLUP BİRÇOK GELİŞTİRİCİNİN ÇOK ZAMAN KAYBETMESİNE NEDEN OLUR.
Komut dosyanıza uygulanan değişikliklerinizin genel ortama etki etmesi için komut dosyasının birlikte çalıştırılması gerekir.
.myscript.sh
Komut.
Betiğinizin bir alt kabukta çalıştırılmadığından emin olmak için bu işlevi kullanabilirsiniz. (Yine örnek Ubuntu kabuğu içindir)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
Umarım bu, bazı yaygın yanlış anlamaları ortadan kaldırır! : D İyi Şanslar!