แก้ไขผิดพลาด `/ bin / sh '


16

ฉันมีสคริปต์นี้:

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

ดังนั้นมันทำให้ฉันนึกถึงสิ่งที่ฉันควรจะทำและฉันย้ายไปที่/usr/local/bin/และคำสั่งtrashออกเสียงข้อโต้แย้งจากนั้นฉันก็เริ่มงาน crontabเพื่อทำให้มันเตือนฉันทุกวันสิ่งที่ฉันต้องการจะทำ แต่crontabไม่ทำงานและฉันก็ไม่เข้าใจว่าทำไม (งานอื่นมันไม่มีที่ติ)

เมื่อฉันเห็นข้อความนี้ใน terminal ของฉัน:

You have new mail in /var/mail/root

ในตอนท้ายของบรรทัดนี้ทำให้ฉันทำผิดพลาด:

/bin/sh: 1: trash: not found

ฉันรู้ว่ามันเป็นเรื่องโง่ที่ต้องทำ แต่ฉันทำ:

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

คิดว่าshเป็นไดเรกทอรีและฉันควรย้ายสคริปต์ที่นั่นเพื่อดำเนินการ

ตอนนี้เมื่อฉันต้องการที่จะเห็นหน้าคนระบบพูดว่า:

"สวัสดีอย่าลืมถังขยะ"

และผลลัพธ์ของcat shคือ:

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

อย่างไรก็ตามฉันสามารถทำอะไรได้หรือต้องติดตั้งระบบปฏิบัติการใหม่


2
ฉันคาดเดา แต่งาน cron ทำงานด้วยสภาพแวดล้อมที่ จำกัด มากรวมถึง $ PATH ด้วยไดเรกทอรีเพียงไม่กี่ นั่นอาจเป็นสาเหตุว่าทำไมมันถึงทำงานได้จากเทอร์มินัล แต่ไม่ใช่ผ่าน cron (อันที่จริงแล้วเมื่อมีอะไรบางอย่างทำงานได้จากสถานีปกติ แต่ไม่ใช่ผ่าน cron นั่นเป็นสิ่งแรกที่ฉันจะตรวจสอบ)
35714

1
@ a CVn; ฉันไม่ทราบว่าปัญหาคืออะไร แต่เมื่อฉันแทนที่spd-sayด้วยechoและตั้งค่างาน crontab: ถังขยะ> ~ / Desktop / trash.txt ** มันทำงานและสร้างไฟล์บนเดสก์ท็อปของฉัน ฉันคิดว่าฉันควรถามเกี่ยวกับเรื่องนี้ในคำถามอื่น
Codito ergo sum

ใช่ถ้าคุณต้องการถามเกี่ยวกับสิ่งนั้นโปรดถามเป็นคำถามแยกต่างหาก
CVn

'ตอนนี้เมื่อฉันต้องการเห็นหน้าคนระบบพูดว่า: "สวัสดีอย่าลืมถังขยะ"'เพื่อความยุติธรรมmanเอกสารส่วนใหญ่เป็นขยะ (หรือยากที่จะเข้าใจ)
LogicalBranch

8
@ ตรรกะสาขาฉันไม่เห็นด้วย; ฉันรักพวกเขาพวกเขาทรงพลังมัคคุเทศก์ออฟไลน์
Codito ดังนั้นผลรวม

คำตอบ:


30

ในระบบ Ubuntu /bin/shเป็นลิงค์สัญลักษณ์ไปยังdashเชลล์โดยค่าเริ่มต้น:

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

ดังนั้น (สมมติว่าเทอร์มินัลอีมูเลเตอร์ของคุณใช้เปลือก bash และไม่ผิดพลาดจากความผิดพลาดของคุณ) สิ่งที่คุณต้องทำคือสร้างลิงค์ขึ้นใหม่:

sudo ln -sf dash /bin/sh

14
OP: mv /usr/local/bin/trash /bin/sh ,sh: คุณไม่สามารถมีชีวิตอยู่กับความล้มเหลวของคุณเองสิ่งที่ทำให้คุณ กลับมาหาฉัน.
LogicalBranch

2
@LogicalBranch คุณมี 1 upvote สำหรับผลงานชิ้นเอกนั้นได้อย่างไร
vikarjramun

4
@vikarjramun มันฟังดูเหมือนเป็นผลงานชิ้นเอก แต่ฉันไม่เข้าใจเลย ...
Nacht - Reinstate Monica

@Nacht มาจาก Avengers: Endgame; สายจากวายร้ายธานอส
Cullub

@Cullub Oooooh ..... ขอบคุณ ... ฉันค่อนข้างแน่ใจว่าฉันได้รับมันตอนนี้ ...
Nacht - Reinstate Monica

7

ไม่คุณไม่จำเป็นต้องติดตั้งระบบของคุณใหม่ / bin / sh เป็น softlink ไปยังเชลล์ของคุณเท่านั้น readlink -f /bin/sh /bin/bashในกรณีของฉันทุบตี ย้ายสคริปต์ของคุณและสร้าง softlink ไปยังเชลล์ที่คุณชื่นชอบ


10
/ bin / sh ควรชี้ไปที่ / bin / dash หากคุณต้องการเปลี่ยนเชลล์ระบบให้ใช้sudo dpkg-reconfigure dash/ ฉันจะสร้าง / bin / sh ชี้ไปที่ / bin / bash ได้อย่างไร? . นอกจากนี้โปรดทราบว่าเชลล์ระบบไม่ใช่เชลล์แบบโต้ตอบเริ่มต้น
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.