Saya baru mengenal bash scripting, dan telah menghadapi tantangan. Saya tahu saya dapat memuat ulang file ".profile" saya dengan hanya melakukan:
. .profile
tapi saya mencoba untuk mengeksekusi yang sama dalam skrip bash yang saya tulis dan itu tidak berfungsi. Ada ide? Ada lagi yang bisa saya berikan untuk menjelaskan?
Terima kasih
bash
shell
unix
.bash-profile
Amir Rustamzadeh
sumber
sumber
Jawaban:
Coba ini untuk memuat ulang shell Anda saat ini:
sumber
source
perintah akan menjalankan file sebagai skrip ... Dalam kasus terburuk, jika seseorang akan menggunakan tugas variabel sepertiMyVar="$foo$MyVar"
di bash_profile mereka, makasource ~/.profile
akan memberikan hasil akhirMyVar="$foo$MyVar$MyVar"
, maka$MyVar
akan memiliki nilai yang salah sesudahnya. (Terlepas dari praktik buruk, minta solusi alternatif)Coba ini:
sumber
Beberapa masalah muncul ketika mencoba memuat ulang / source ~ / .profile file. [Ini merujuk ke Ubuntu linux - dalam beberapa kasus detail dari perintah akan berbeda]
Iklan. 1)
Menjalankan ini secara langsung di terminal berarti bahwa tidak akan ada subkulit yang dibuat. Jadi, Anda dapat menggunakan dua perintah:
atau
Dalam kedua kasus ini akan memperbarui lingkungan dengan isi file profil.
Iklan 2) Anda dapat memulai skrip bash apa pun dengan menelepon
atau
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
perintah.
Untuk memastikan bahwa skrip Anda tidak dijalankan di subshel, Anda dapat menggunakan fungsi ini. (Sekali lagi contoh untuk shell Ubuntu)
Saya harap ini menghapus beberapa kesalahpahaman umum! : D Semoga Sukses!
sumber
Script bash berjalan dalam subkulit terpisah. Untuk membuat ini berfungsi, Anda perlu sumber skrip lain ini juga.
sumber
.profile
file Anda sesuatu seperti ini:. $HOME/.profile
dan Anda harus memulai skrip Anda dengan sumber juga. Sesuatu seperti. /path/to/yourscript
Mencoba:
sumber