Yanlış değiştirilmiş `/ bin / sh '


16

Bu senaryo vardı:

spd-say "Hello, don't forget the trash bin."

Bu yüzden bana ne yapmam gerektiğini hatırlattı ve ben de ona taşındım /usr/local/bin/ve komut trashargümanı telaffuz etti, sonra her gün ne yapmak istediğimi hatırlatmak için bir crontab işi ayarladım . Ama crontab işe yaramadı ve nedenini anlayamadım (Diğer işleri kusursuz bir şekilde yapıyor).

Bu mesajı terminalimde gördüğümde:

You have new mail in /var/mail/root

sonunda bu çizginin beni kötü bir hata yapmasına neden oldu:

/bin/sh: 1: trash: not found

Bunun aptalca bir şey olduğunu biliyorum ama yaptım:

mv /usr/local/bin/trash /bin/sh

bu shbir dizin olduğunu düşünüyorum ve ben yürütmek için komut dosyası oraya taşımak gerekir.

Şimdi, bir man sayfasını görmek istediğimde sistem şöyle diyor:

"Merhaba, çöp kutusunu unutma."

Ve çıktı cat sh:

#!/bin/bash
spd-say "Hello, don't forget the trash bin. "

Her neyse, herhangi bir şey yapabilir miyim veya işletim sistemimi yeniden yüklemem gerekir mi?


2
Spekülasyon yapıyorum, ancak cron işleri sadece birkaç dizin içeren bir $ PATH dahil olmak üzere çok sınırlı bir ortamla çalışıyor. Bu yüzden terminalden çalışıyor olabilir, ancak cron aracılığıyla değil. (Aslında, bir şey normal bir terminalden çalıştığında, ancak cron aracılığıyla olmadığında, kontrol ettiğim ilk şey budur.)
CVn

1
@ bir CVn; Ben değiştirdiğinizde Sorunun ne bilmiyorum ama vites-söz ile yankı çöp> ~ / Masaüstü / trash.txt **, bu & çalışan bir dosya benim Masaüstünde oluşturulur: ve crontab iş ayarlayın. Sanırım başka bir soruda bunu sormalıyım.
Codito ergo sum

Evet, bunu sormak istiyorsanız, lütfen ayrı bir soru olarak sorun.
CVn

'Şimdi, bir adam sayfasını görmek istediğimde sistem şöyle diyor: "Merhaba, çöp kutusunu unutma."' Adil olmak gerekirse, çoğu mandoküman çöp (veya anlaşılması zor)
LogicalBranch

8
@LogicalBranch I katılmıyorum; Onları seviyorum; güçlü, çevrimdışı rehberler.
Codito ergo sum

Yanıtlar:


30

Ubuntu sistemlerinde, varsayılan olarak kabuğa /bin/shsembolik bir bağlantıdır dash:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul  7  2018 /bin/sh -> dash

Yani (terminal emülatörünüzün bash kabuğunu kullandığını ve hatanızla bozulmadığını varsayarak) tek yapmanız gereken bağlantıyı yeniden oluşturmaktır:

sudo ln -sf dash /bin/sh

14
OP: mv /usr/local/bin/trash /bin/sh ,sh: Kendi başarısızlığınla yaşayamadın, bu seni nereye getirdi? Bana dön.
LogicalBranch

2
@LogicalBranch Bu şaheser için nasıl sadece 1 oyunuz var?
vikarjramun

4
@vikarjramun bir başyapıt gibi geliyor ama ben sadece anlamıyorum ...
Nacht - Monica

@Nacht Avengers'dan: Endgame; kötü adamdan bir çizgi, Thanos.
Cullub

@Cullub Oooooh ..... teşekkürler ... Şimdi anladığımdan eminim ...
Nacht - Monica'yı

7

Hayır, sisteminizi yeniden yüklemenize gerek yoktur. / bin / sh, kabuğunuza yalnızca bir yazılım bağlantısıdır. readlink -f /bin/sh /bin/bashBenim durumumda bash. Komut dosyanızı taşıyın ve en sevdiğiniz kabuğa bir softlink yapın.


10
/ bin / sh aslında / bin / dash'i göstermelidir. Eğer sistem kabuk, kullanımını değiştirmek isterseniz sudo dpkg-reconfigure dashbaşına, / bin / bash Nasıl Can I Make / bin / sh noktası? . Ayrıca sistem kabuğunun varsayılan etkileşimli kabuk olmadığını unutmayın.
wjandrea
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.