/ Bin / bash… bazen çalışamaz mı?


1

Debian Wheezy 7.4 çalıştıran bir Google Hesaplama Motorundayım.

Son zamanlarda garip şeyler farkettim. Mesela yapabilirim sudo bash. Ama sonra kökten yapamam sudo -u anotherUser bashya da yapamam su -l anotheruser -c bash.

Daha da önemlisi, GNU ekranının yeni örneklerini başlatamıyorum. Yeni bir örnek başlatmayı denersem, hemen kapanıyor ve [screen is terminating]mesajı alıyorum. Çalışmakta olan durumlarda, daha fazla pencere başlatamadım.

Sonra bütün ortak olanlara bulundu: bash!

Yapabilirim screen zshya da screen sh.

Yapabilirim sudo bashve sonra sudo -u anotheruser zshya da su -l anotheruser -s zshdeğil su -l anotheruser -c zsh.

Ben unutmayın am bash ile giriş yapıp ben yapabilirsiniz yapmak sudo bash. Ama için bash kullanamaz sudoveya sukökünden başka bir kullanıcıya, ne de bir için bash kullanabilirsiniz screenkabuk.

Yeniden başlattım. Evet, bu beni çok endişelendiriyordu aslında sunucumu yeniden başlattım.

Buna neyin sebep olabileceği hakkında hiçbir fikrim yok ve biraz endişelendim.

Bash config dosyalarım (bildiğim kadarıyla onlar varsayılan olarak değişmedi):

bash tamamlama ana (giriş) kabuğunda çalışır.

Glenn Jackman tarafından istenen bilgi:

$ md5sum /bin/bash /usr/bin/bash
144968564a6b1159ed82059920cea76f  /bin/bash
md5sum: /usr/bin/bash: No such file or directory
$ getent passwd anotheruser
anotheruser:x:1004:1004::/home/anotheruser:/bin/bash

Ayrıca başka bir test düşündüm. Bu çalışıyor:

$ echo $(bash -c 'echo Hello, World!')

Neler oluyor?


Bu dönüş ne yapar: md5sum /usr/bin/bash /bin/bashve getent passwd anotheruser??
glenn jackman

Bunları sorunun ana gövdesine ekleyeceğim. Hala bazı profil dosyalarının suçlanacağını düşünüyorum. Bana mantıklı gelen tek şey bu.
eje211

Yanıtlar:


0

Bir sorun vardı:

/usr/share/bash-completion/bash_completion

Daha spesifik olarak, başlangıçtaki çizgidir:

if [ "$0" != "-bash" ]; then exit; fi

Bu satır mevcut kabuğun bash olup olmadığını kontrol eder. Değilse, bash tamamlama kullanmaz. Satırı kaldırırsam, [[komutu kullanmaya çalışan bazı komut dosyalarında hatalar alıyorum .

Sonunda ortaya çıkan şey bu:

isbash=no
case "$SHELL" in
  *bash*) isbash=yes ;;
esac
case "$0" in
  *bash*) isbash=yes ;;
esac
if [ "$isbash" = "no" ]; then exit; fi

Lütfen kendi sorunuzu cevapladıysanız, cevap olarak işaretleyiniz.
Jared Burrows

Aptal kural, değil mi? Ama tamam.
Jared Burrows,
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.