Bash'i Homebrew aracılığıyla yükseltmek güvenli midir?


81

OS X'te yeniyim. MacBook Pro'da OS X Lion kullanıyorum. Homebrew kullanarak bash kabuğunu yükseltmek güvenli midir:

$ brew install bash

Güvenliyse, Terminal'den geçirdiğim kabuğun varsayılan örneğini nasıl yaparım?

Teşekkürler!


2
Bu soru aniden son derece alakalı hale geldi, bkz. Shellshock
ecnepsnai

Evet. 10 karakter
shrx

Yanıtlar:


105

İçindeki ikili /{,usr/}{,s}bin/dosyalar genellikle başka dosyalarla değiştirilmemelidir. Diğer programlar, OS X ile birlikte gelen sürümler olmalarını bekler ve bunların yerine OS yükseltmeleri yapılır.

Çalıştırdıktan sonra brew install bash, varsayılan kabuğu aşağıdaki şekilde güvenle değiştirebilirsiniz:

  • ekleme /usr/local/bin/bashiçin/etc/shells
  • Koşu chsh -s /usr/local/bin/bash.

Terminal veya iTerm 2'deki ayarların normalde değiştirilmesi gerekmez. Her ikisi de varsayılan pencerenin bir giriş kabuğu ile yeni pencereler açmak için varsayılandır.

Varsayılan kabuk ayrıca Sistem Tercihleri'nden veya dscl ile değiştirilebilir, ancak üç seçenek de yalnızca değiştirilebilir /var/db/dslocal/nodes/Default/users/$USER.plist.


İşe yaramış gibi görünüyor ve herhangi bir sorunla karşılaşırsam geri dönüşü kolay olmalı! Teşekkürler!
Rudy

gelişmiş seçenek sayfasının orada olduğunu bilmiyordum. Tatlı!
lemonginger

2
/etc/shellsDemise takılan bash içerecek şekilde düzenleme ile ilgili bit gereklidir. Aksi takdirde (en azından makinemde) Terminal çalışmaya başlamayı reddedecektir.
brendanjerwin

2
Üçüncü komut (csh -s) artık Mavericks 10.9.2'de gerekli değildir.
Brent Faust

2
Sadece bunun brew install bashçalışması için mecburdum. (yani, değiştirmek zorunda değildi /etc/shells)
Daniel

4

Burada yanlış olabilirim, ama bildiğim kadarıyla, brewkendi sistemlerini kurardı çünkü sistem varsayılanları (ve ) bashaltında /usr/local/binçalışırken demleme çalışıyor ./bin/usr/bin

Terminal hakkında, kabukları kendi özel komutunuzla açabilirsiniz. Tercihler> Başlangıç ​​seçeneğine gidin ve Şununla açık mermiler: Komut (tam yol) . Yeni bashve vuala'nızın yolunu yazın!

Umarım yardımcı olur!

BTW: Yedekleme! Bu durumlarda en iyi tavsiye!


hey, ne biliyorsun, bu cevap aslında bir çekicilik gibi çalışıyor
castiel

0

Bir şey yapmadan önce, geçerli dosyanızı yedekleyin (elbette, ancak her zaman söylenmeyi hak ediyor)

sudo cp /bin/bash /bin/bash.3.2.bk

Sonra Homebrew'in indirdiği bash çalıştırılabilirine bir link oluşturun. Sanırım / usr / local / Cellar'da olacak

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

Şimdi / bin / bash, usr / yerel dizininizdeki dosyayı gösterir.


3
Sistem sürümü için yeni bir bash basmanın olumsuz tarafı, işletim sisteminin herhangi bir güncellemesinin tercih ettiğiniz kabuğu silebilmesidir. Muhtemelen OP, işletim sistemi "eski işletim sisteminden daha yeni", ancak "özel işlemden eski" bir bash sürümü yüklerse kırılabilecek yeni özellikler kullanmak istiyor. Varsayılan yolu değiştirmek veya kullanıcı kabuğu değişkenini değiştirmek daha iyidir.
bmike

usr / local dizininizdeki bash sürümünün üzerine yazmayacağından, sadece yeni bir simlink oluşturabilirsiniz. ama
haklısın

Ooh - cevabınızı düzeltin lütfen ilk önce (ve ikinci bir alternatif olarak tercih ederseniz orijinal fikrinizi
koruyun)

1
hmm, peki bu / ne dediğimi, ancak her adımın biraz daha iyi ne yaptığını netleştirmek için düzenleme yaptım. Yine de en yüksek puan alan cevabın daha iyi olduğunu düşünüyorum :)
lemonginger

Bu sistem kabuğunu değiştirmekle ilgili oldukça tehlikeli bir yol gibi görünüyor.
Samuel Mikel Bowles

0

Sadece fırlatırsan güvenli olduğunu düşünüyorum

brew install bash

ve sonra varsayılan kabuğunuz olarak ekleyin

chsh -s /usr/local/bin/bash

çünkü yalnızca geçerli kullanıcınızı değiştiriyorsunuz. Ancak, benim varsayılan ~ / .profile olduğunu fark ettim.

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

bu yüzden güncellenmesi gerekiyor. Olarak değiştirdim

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi

chshTek başına neden yeterli olmadığı için diğer cevaplara bakınız . Ayrıca Güncellenmiş .profile pasajı orijinal bir aynı görünüyor
nohillside

@ patrix: işaret ettiğim için ikinci snippet'i güncelleştirdim. Eğer iyi olurdu brew install bashbaşka bir işlem gerektirmez. Paylaştığım güncellenmiş profil ile, değil. Umarım bu başkalarına yardımcı olabilir.
Gianluca Casati
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.