Beberapa masalah muncul ketika mencoba memuat ulang / source ~ / .profile file. [Ini merujuk ke Ubuntu linux - dalam beberapa kasus detail dari perintah akan berbeda]
- Apakah Anda menjalankan ini langsung di terminal atau dalam skrip?
- Bagaimana Anda menjalankan ini dalam skrip?
Iklan. 1)
Menjalankan ini secara langsung di terminal berarti bahwa tidak akan ada subkulit yang dibuat. Jadi, Anda dapat menggunakan dua perintah:
source ~/.bash_profile
atau
. ~/.bash_profile
Dalam kedua kasus ini akan memperbarui lingkungan dengan isi file profil.
Iklan 2) Anda dapat memulai skrip bash apa pun dengan menelepon
sh myscript.sh
atau
. myscript.sh
Dalam kasus pertama ini akan membuat subkulit yang tidak akan memengaruhi variabel lingkungan sistem Anda dan hanya akan terlihat pada proses subkulit. Setelah menyelesaikan perintah subshell, tidak ada ekspor dll tidak akan diterapkan. INI ADALAH KESALAHAN UMUM DAN MENYEBABKAN BANYAK PENGEMBANG UNTUK KEHILANGAN BANYAK WAKTU.
Agar perubahan yang diterapkan pada skrip Anda memiliki efek untuk lingkungan global, skrip harus dijalankan
.myscript.sh
perintah.
Untuk memastikan bahwa skrip Anda tidak dijalankan di subshel, Anda dapat menggunakan fungsi ini. (Sekali lagi contoh untuk shell Ubuntu)
#/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
}
Saya harap ini menghapus beberapa kesalahpahaman umum! : D Semoga Sukses!