Değişiklik .bashrcyaparsam oturumu kapatıp tekrar açmadan nasıl yeniden yüklerim?
Değişiklik .bashrcyaparsam oturumu kapatıp tekrar açmadan nasıl yeniden yüklerim?
Yanıtlar:
Sadece komutu girmelisiniz:
source ~/.bashrc
veya komutun daha kısa sürümünü kullanabilirsiniz:
. ~/.bashrc
alias editbashrc='vim ~/.bashrc; source ~/.bashrc'. Özel takma ad kullanılıyorsa, düzenlemeyi yaptıktan sonra yeniden yüklemeyi düşünmeniz gerekmediği için bu, düzenlemeyi daha pürüzsüz hale getirecektir.
Veya şunları kullanabilirsiniz:
exec bash
Bu aynı şeyi yapar ve hatırlanması daha kolaydır (en azından benim için).
execKomut tamamen belirtilen komut satırı çalıştırarak Kabuk işlemi yerine geçer. Örneğimizde, geçerli kabuk ne olursa olsun yeni bir örneğiyle bash(güncellenmiş yapılandırma dosyalarıyla) değiştirilir.
source .bashrcKomut farkını açıklar exec bashmısınız?
sourceargüman olarak iletilen dosyanın içeriğini geçerli kabukta yürüten yerleşik bir kabuk komutudur . Örneğin, geçerli kabukta .bashrc dosyasını yürütür. Ve execkomut kabuğu belirli bir programla değiştirir, örneğin, kabuğunuzu bash ile değiştirir (güncellenmiş yapılandırma dosyalarıyla)
. ~/.bashrcyürütecek , bu yüzden eksik bir hata var . Kabuktan bulunamadığından çözüm de yok. Bunu denedim ve docker görüntüsü sorunsuz bir şekilde inşa edildi! dashbashshoptsource
source ~/.bashrckoruyacaktır (büyük olasılıkla kaynak kullanımı ile değiştirilmiş olsa da ), ancak yalnızca geçerli kabuğunuzun ortam değişkenlerini koruyacaktır (geçerli kabukta kabuk değişkenleri, işlev, seçenekler açısından geçici değişiklikler) kaybolacaktır. İhtiyaçlarınıza bağlı olarak, bir veya başka yaklaşım tercih edilebilir. ~/.bashrcexec bash
exec bash. execKomut değiştirir bizim durumumuzda, bash, program ile kabuk. Yani, terminalde her zaman bir tane bash örneği vardır.
To tamamlayacak ve kontrast en popüler iki cevapları, . ~/.bashrcveexec bash :
Her iki çözüm de etkili bir şekilde yeniden yüklenir ~/.bashrc, ancak farklılıklar vardır:
. ~/.bashrcya source ~/.bashrcedecektir korumak Mevcut kabuk :
~/.bashrcgeçerli kabuk haline ( kaynak ) yapar, cari kabuk ve devlet vardır korunmuş ortam değişkenleri, kabuk değişkenleri, kabuk seçenekleri, kabuk işlevleri ve komut geçmişini içeren,.exec bashVeya, daha sağlam, exec "$BASH"[1] , edecektir yerine mevcut kabuk yeni bir örneği ile ve bu nedenle sadece geçerli kabuk korumak ortam değişkenleri (ad-hoc tanımladığınız olanlar dahil).
İhtiyaçlarınıza bağlı olarak, bir veya başka yaklaşım tercih edilebilir.
[1] exec bash, daha önce 'de listelenen bir dizinde mevcutsa , teoride mevcut kabuğu başlatandan farklı bir bash yürütülebilir dosya yürütebilir $PATH. Özel değişken $BASHher zaman geçerli kabuğu başlatan yürütülebilir dosyanın tam yolunu içerdiğinden exec "$BASH", aynı yürütülebilir dosyayı kullanacağı garanti edilir .
Bir not yeniden "..."çevresinde $BASH: olduğu gibi değişken değeri Bash tarafından yorum yapmadan, kullanılmasını sağlar çift alıntı; değerin katıştırılmış boşlukları veya diğer kabuk metakarakterleri yoksa (bu durumda olası değildir), kesinlikle çift tırnaklara ihtiyacınız yoktur, ancak bunları kullanmak iyi bir alışkanlıktır.
exec $BASHkaynak olacak ~/.bashrc, böylece yeni oturumda kabuk ortamındaki değişikliklerini göreceksiniz.
Birisi cevabımı yanlış İngilizce eklemek için düzenledi, ancak burada kabul edilen cevaptan daha düşük olan orijinal vardı.
. .bashrc
~/, ancak en üstteki cevap her ikisini de gösterdiğinden source ~/.bashrcve . ~/.bashrcbu cevabın gereksiz olarak silinip silinmeyeceğini merak ediyorum.
Ortamınıza bağlı olarak, sadece yazarak
bash
de işe yarayabilir.
. ~/.bashrc
source ~/.bashrc
exec bash
execkomutu kabuğu verilen bir programla değiştirir ... - WhoSayIn
exec bashhala mevcut kabuğun ortamını devralır. exec env -i bash(veya exec env -i bash -lşu anda bir giriş kabuğundaysanız) daha yakın olacaktır .
Ortamınıza bağlı olarak, bir SSH oturumunu açtığınızda .bashrc'nin otomatik olarak yüklenmesi için komut dosyası eklemek isteyebilirsiniz. Son zamanlarda Ubuntu çalıştıran bir sunucuya geçiş yaptım ve varsayılan olarak .bashrc veya .bash_profile değil .profile dosyası yüklenir. .Bashrc içinde herhangi bir komut dosyasını çalıştırmak için, source ~/.bashrcher oturum açıldığında çalıştırmak zorunda kaldım , bu da uzak dağıtımları çalıştırırken yardımcı olmaz.
Bir oturumu açarken .bashrc'nizin otomatik olarak yüklenmesini sağlamak için .profile dosyasına eklemeyi deneyin:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Oturumunuzu yeniden açtığınızda .bashrc dosyasında bulunan yolların / komut dosyalarının yüklenmesi gerekir.
Vultr bulut tabanlı sunucumu kurmak için easyengine kullandım.
Bash dosyamı adresinde buldum /etc/bash.bashrc.
Yani source /etc/bash.bashrcbenim için hile yaptı!
Güncelleme
Bir çıplak sunucu (ubuntu 16.04) kurarken, henüz bir kullanıcı adı ayarlamadıysanız ve root üzerinden giriş yaparken yukarıdaki bilgileri kullanabilirsiniz.
Bir kullanıcı (sudo yetkilerine sahip) oluşturmak ve bunun yerine bu kullanıcı adı olarak giriş yapmak en iyisidir.
Bu, ayarlarınız için .profile ve .bashrc dosyaları da dahil olmak üzere bir dizin oluşturur.
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
Şimdi, düzenleyecek ve (ve "kaynak") ~/.bashrc .
Sunucumda, bu adresin bulunduğu yer /home/your_username/.bashrc
( your_usernameaslında yukarıda oluşturduğunuz yeni kullanıcı adı ve şimdi giriş yapın)
exec bash, akımı değiştirmek için yeni bir kabuk oluşturmak ve yeniden başlatmak için harika bir yoldur. sadece cevaba eklemek için, $ SHELL bash olan geçerli kabuğu döndürür. Aşağıdakileri kullanarak, yalnızca bash'a değil, geçerli kabuğu yeniden yükler.
exec $SHELL -l;
Benim için PATH'ı değiştirdiğimde ne işe yarıyor: exec "$BASH" --login
~/.bashrcki, --loginwill not (doğrudan) yeniden; kullanıcı düzeyinde, bunun yerine yeniden yüklenir ~/.bash_profile(veya ~/.bash_loginveya ~/.profile).
msysgit üzerinde aşağıdaki komutu kullanıyorum
. ~/.bashrc
daha kısa versiyonu
source ~/.bashrc
Etkileşimli bir kabuk varsayarsanız ve geçerli komut geçmişinizi korumak ve ayrıca / etc / profile (/ etc / bashrc dahil olmak üzere ortam verilerini yükleyen ve Mac OS X üzerinde /etc/paths.d/ adresinde tanımlanan yolları yükleyen path_helper) girin, komut geçmişinizi ekleyin ve login ('-l') seçeneğiyle bash yürütmesi yapın:
history -a && exec bash -l
Saf exec bashkomutun ortam değişkenlerini koruyacağını fark ettim , bu yüzden kullanmanız gerekiyorexec -c bash bash'ı boş bir ortamda çalıştırmak .
Örneğin, bir bash giriş ve export A=1, eğer exec bash, A == 1.
Eğer exec -cl bash, Aboştur.
Bence bu işinizi yapmanın en iyi yolu.
şahsen sahibim
alias ..='source ~/.bashrc'
benim bashrc, böylece sadece yeniden yüklemek için ".." kullanabilirsiniz.
..takma ad olarak kullanır cd .., bu yüzden çok kafa karıştırıcı olacaktır.
alias rehash='source ~/.bashrc'benim seçimim.
export PATH=$PATH:foove sonra bunu değiştirinexport PATH=$PATH:bar. Giriş ve çıkış destek vermesi halinde, sadecebarPATH içinde olacak, ama ne önermek sen yoksa, hemfoovebarPATH içinde olacaktır. Bunun bir yolunu biliyor musun?