Değişiklik .bashrc
yaparsam oturumu kapatıp tekrar açmadan nasıl yeniden yüklerim?
Değişiklik .bashrc
yaparsam 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).
exec
Komut 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 .bashrc
Komut farkını açıklar exec bash
mısınız?
source
argü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 exec
komut kabuğu belirli bir programla değiştirir, örneğin, kabuğunuzu bash ile değiştirir (güncellenmiş yapılandırma dosyalarıyla)
. ~/.bashrc
yü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! dash
bash
shopt
source
source ~/.bashrc
koruyacaktı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. ~/.bashrc
exec bash
exec bash
. exec
Komut 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ı, . ~/.bashrc
veexec bash
:
Her iki çözüm de etkili bir şekilde yeniden yüklenir ~/.bashrc
, ancak farklılıklar vardır:
. ~/.bashrc
ya source ~/.bashrc
edecektir korumak Mevcut kabuk :
~/.bashrc
geç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 bash
Veya, 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 $BASH
her 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 $BASH
kaynak 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 ~/.bashrc
ve . ~/.bashrc
bu 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
exec
komutu kabuğu verilen bir programla değiştirir ... - WhoSayIn
exec bash
hala 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 ~/.bashrc
her 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.bashrc
benim 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_username
aslı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
~/.bashrc
ki, --login
will not (doğrudan) yeniden; kullanıcı düzeyinde, bunun yerine yeniden yüklenir ~/.bash_profile
(veya ~/.bash_login
veya ~/.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 bash
komutun 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
, A
boş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:foo
ve sonra bunu değiştirinexport PATH=$PATH:bar
. Giriş ve çıkış destek vermesi halinde, sadecebar
PATH içinde olacak, ama ne önermek sen yoksa, hemfoo
vebar
PATH içinde olacaktır. Bunun bir yolunu biliyor musun?