Bagaimana cara memuat ulang .bash_profile dari baris perintah?

997

Bagaimana saya bisa memuat ulang .bash_profiledari baris perintah ?

Saya bisa mendapatkan shell untuk mengenali perubahan .bash_profiledengan keluar dan masuk kembali tetapi saya ingin bisa melakukannya sesuai permintaan.

markdorison
sumber

Jawaban:

1883

Cukup ketik source ~/.bash_profile

Atau, jika Anda suka menyimpan penekanan tombol, Anda bisa mengetik . ~/.bash_profile

SiegeX
sumber
49
Bagaimana alias BASHRELOAD=". ~/.bash_profile". Jika Anda sering melakukan ini, Anda bisa menggunakan alias br.
bobobobo
1
alasan mengapa saya harus melakukan ini setiap waktu / sesi? Saya tidak bisa membuat perubahan pada .bash_profile untuk bertahan meskipun mereka ada di file ketika saya membukanya di editor. Membingungkan
erwinheiser
3
@ erwinheiser apakah sistem Anda memuat file? Beberapa sistem menggunakan file lain, seperti ~ / .bashrc.
Graham P Heath
1
Jika Anda ingin tahu apakah ada yang salah pada beban Anda dapat menggunakan:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista
1
Untuk orang-orang yang lupa bahwa Anda beralih ke OhMyZsh. jalankan open ~ / .zshrc dan buat perubahan di sana alih-alih .bash_profile Anda
Sankofa
106
. ~/.bash_profile

Pastikan Anda tidak memiliki dependensi pada kondisi saat ini di sana.

Carl Norum
sumber
15
Mengapa ini bekerja? Yaitu, apa .perintah dalam kasus ini?
Jonah
9
operator titik:. hanyalah alias untuk sourceperintah.
Graham P Heath
8
@ GrahamPHeath - sebenarnya saya pikir itu sebaliknya; yang .lebih tua dari sourceis.
Carl Norum
4
sourceadalah implementasi spesifik bash dari.
Thirupathi Thangavel
7
@StasS - .dan sourcesecara harfiah hal yang sama di bash. Dari tautan: " sourceadalah sinonim untuk titik / titik ' .' di bash, tetapi tidak di POSIX sh, jadi untuk kompatibilitas maksimum, gunakan periode."
Carl Norum
31

Cukup ketik:

. ~/.bash_profile

Namun, jika Anda ingin sumbernya untuk berjalan secara otomatis ketika terminal mulai bukannya menjalankannya setiap kali Anda membuka terminal, Anda dapat menambahkan . ~/.bash_profileke ~/.bashrcfile.

catatan:

Ketika Anda membuka terminal, terminal memulai bash dalam mode interaktif (non-login), yang berarti terminal akan bersumber ~/.bashrc.

~/.bash_profilehanya bersumber dari bash ketika dimulai dalam mode login interaktif . Itu biasanya hanya ketika Anda masuk di konsol ( Ctrl+ Alt+ F1.. F6), atau terhubung melalui ssh.

Mohammad Anini
sumber
15

Anda juga dapat menggunakan perintah ini untuk memuat ulang ~ / .bash_profile untuk pengguna tersebut. Pastikan untuk menggunakan tanda hubung.

su - username
jaypal singh
sumber
6
Ini akan memanggil seluruh shell di dalam shell, jauh dari ideal. Pilihan lain hanya menjalankan kembali file yang relevan, yang berarti mereka (A) sebenarnya relevan dengan pertanyaan yang diajukan dan (B) tidak menumpuk kerang dan mungkin memuat ulang hal-hal lain yang seharusnya tidak (env vars, dll.). Ada yang cara yang tepat untuk menggantikan shell saat ini langsung (tanpa bersarang), tapi karena itu off-topik, aku akan meninggalkan pembaca tertarik untuk mencari tempat lain.
underscore_d
3
Anda membuka shell lain, ini bukan memuat ulang Anda mungkin juga membuka terminal baru atau login
Juan Diego
15

Saya suka fakta bahwa setelah Anda baru saja mengedit file, yang perlu Anda lakukan adalah mengetik:

. !$

Ini sumber file yang baru saja Anda edit dalam sejarah. Lihat Apa bang dolar dalam bash .

hyper_st8
sumber
11
  1. Simpan file .bash_profile
  2. Direktori home pengguna pengguna dengan mengetik cd
  3. Muat ulang profil dengan . .bash_profile
Mithun Khatri
sumber
8
Pulang saja ke rumah cd. Tidak perlu ~.
roNn23
8
Tidak perlu cd- Anda hanya dapat memuatnya kembali dari direktori Anda saat ini di:. ~/.bash_profile
Alex Villa
10

Jika Anda tidak keberatan kehilangan riwayat terminal shell Anda saat ini, Anda juga bisa melakukannya

bash -l

Itu akan memotong cangkang Anda dan membuka proses bash anak lain. The -lparameter mengatakan bash untuk menjalankan sebagai shell login, ini diperlukan karena .bash_profile tidak akan berjalan sebagai shell non-login, untuk info lebih lanjut tentang ini baca di sini

Jika Anda ingin sepenuhnya mengganti shell saat ini, Anda juga dapat melakukan:

exec bash -l

Di atas tidak akan memotong shell Anda saat ini tetapi menggantinya sepenuhnya, jadi ketika Anda mengetiknya exitakan benar-benar berakhir, daripada menjatuhkan Anda ke shell sebelumnya.

Ulukai
sumber
Anda tidak akan kehilangan riwayat jika menggunakan iterm2
Xitcod13
4

Tambahkan alias bashs="source ~/.bash_profile"ke file bash Anda. Jadi, Anda dapat menelepon bashsdari waktu berikutnya

Shemeer M Ali
sumber
1
Saya alias itu untuk reset- lebih mudah diingat
jcollum
3

jika .bash_profile tidak ada, Anda dapat mencoba menjalankan perintah berikut:

. ~/.bashrc 

atau

 source ~/.bashrc

alih-alih .bash_profile. Anda dapat menemukan informasi lebih lanjut tentang bashrc

Ezequiel De Simone
sumber
3

Saya ingin memposting jawaban cepat yang saat menggunakan source ~/.bash_profileatau jawaban yang disebutkan di atas berfungsi, satu hal yang perlu disebutkan adalah bahwa ini hanya memuat ulang profil bash Anda di tab atau sesi saat ini yang Anda lihat. Jika Anda ingin memuat ulang profil bash Anda di setiap tab / shell, Anda harus memasukkan perintah ini secara manual di masing-masing tab.

Jika Anda menggunakan iTerm, Anda dapat menggunakan CMD⌘+ Shift+ Iuntuk memasukkan perintah ke semua tab saat ini . Untuk terminal mungkin berguna untuk merujuk masalah ini ;

agustus
sumber
2

Saya menggunakan Debian dan saya cukup mengetik exec bashuntuk mencapai ini. Saya tidak bisa mengatakan apakah itu akan berfungsi pada semua distribusi lainnya.

Cassandra
sumber
2
Ini tidak akan berfungsi di Mac (setidaknya tidak dalam versi yang saya gunakan - Sierra) karena hanya melakukan itu mengeksekusi shell no login yang tidak menjalankan .bash_profile
Ulukai
@Ulukai rupanya hanya mengetik . .bash_profilesementara di dalam direktori home Anda di Mac akan melakukan pekerjaan itu. Sama seperti balasan yang diberikan di atas oleh 7urkm3n.
Cassandra
2
alias reload!=". ~/.bash_profile"

atau jika ingin menambahkan log melalui fungsi

function reload! () {
    echo "Reloading bash profile...!"
    source ~/.bash_profile
    echo "Reloaded!!!"
}
7urkm3n
sumber
Tidak, ini berdasarkan preferensi Anda. Jika ingin menambahkan beberapa baris cetak ekstra menunjukkan status atau hanya pergi hanya . ~/. bash_profile tidaksource ~/.bash_profile
7urkm3n
1

Saya menjalankan Sierra, dan sedang mengerjakan ini untuk sementara waktu (mencoba semua solusi yang disarankan). Saya menjadi bingung sehingga akhirnya mencoba me-restart komputer saya! Itu berhasil

kesimpulan saya adalah bahwa kadang-kadang hard reset diperlukan

Penggemar nomor satu Bjorks
sumber
1
Mike ya hard reset akan berfungsi karena semuanya baru saja dimuat. Selama perubahan yang Anda buat fungsional, itu akan berlaku pada boot berikutnya. Namun akan lebih mudah bagi Anda untuk menggali sedikit untuk menemukan perintah / metode untuk hanya menyegarkan bash tanpa harus melakukan itu sepanjang waktu. Akan ada cara untuk mencapainya tanpa reboot, yang tentu saja akan menghabiskan terlalu banyak waktu hanya untuk melihat apakah perubahan terbaru berfungsi! Mungkin lihat di osxdaily.com/2016/06/07/...
Cassandra
1
ya saya mencoba perintah disingkat dan penuh untuk memuat ulang profil / path bash. itu tidak berhasil, hanya logout dan kembali bekerja. aneh
penggemar nomor satu Bjorks