Sửa đổi sai `/ bin / sh '


16

Tôi đã có kịch bản này:

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

Vì vậy, nó nhắc nhở tôi về những gì tôi phải làm, và tôi chuyển nó đến /usr/local/bin/và lệnh trashphát âm đối số, sau đó tôi đặt một công việc crontab , để làm cho nó nhắc nhở tôi hàng ngày những gì tôi muốn làm. Nhưng crontab không hoạt động và tôi không thể hiểu tại sao (Nó làm những công việc khác hoàn hảo).

Khi tôi thấy tin nhắn này trong thiết bị đầu cuối của mình:

You have new mail in /var/mail/root

vào cuối của dòng này làm cho tôi làm một sai lầm xấu:

/bin/sh: 1: trash: not found

Tôi biết rằng đó là một điều ngớ ngẩn để làm nhưng tôi đã làm:

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

nghĩ rằng đó shlà một thư mục và tôi nên di chuyển tập lệnh đến đó để được thực thi.

Bây giờ, khi tôi muốn xem một trang người đàn ông, hệ thống nói:

"Xin chào, đừng quên thùng rác."

Và đầu ra của cat shlà:

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

Dù sao, tôi có thể làm bất cứ điều gì hoặc tôi phải cài đặt lại hệ điều hành của mình?


2
Tôi đang suy đoán, nhưng các công việc định kỳ chạy với một môi trường rất hạn chế, bao gồm $ PATH chỉ với một vài thư mục. Đó có thể là lý do tại sao nó hoạt động từ thiết bị đầu cuối, nhưng không thông qua cron. (Trên thực tế, khi một cái gì đó hoạt động từ một thiết bị đầu cuối bình thường nhưng không thông qua cron, đó là điều đầu tiên tôi kiểm tra.)
CVn

1
@ một CVn; Tôi không biết vấn đề là gì nhưng khi tôi thay thế spd-say bằng echo và đặt công việc crontab: thùng rác> ~ / Desktop / thùng rác **, nó hoạt động & một tệp được tạo trên Màn hình của tôi. Tôi nghĩ rằng tôi nên hỏi về nó trong một câu hỏi khác.
Codito ergo sum

Có, nếu bạn muốn hỏi về điều đó, xin vui lòng hỏi nó như một câu hỏi riêng biệt.
một CVn

'Bây giờ, khi tôi muốn xem một trang nam, hệ thống nói: "Xin chào, đừng quên thùng rác."' Công bằng mà nói, hầu hết các mantài liệu đều là rác rưởi (hoặc khó hiểu)
LogicalBranch

8
@LogicalBranch Tôi không đồng ý; Tôi yêu họ, họ là những người hướng dẫn ngoại tuyến mạnh mẽ.
Codito ergo sum

Câu trả lời:


30

Trong các hệ thống Ubuntu, theo mặc định /bin/shlà một liên kết tượng trưng đến hệ dashvỏ:

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

Vì vậy (giả sử trình giả lập thiết bị đầu cuối của bạn sử dụng shell bash và không bị hỏng do lỗi của bạn), tất cả những gì bạn cần làm là tạo lại liên kết:

sudo ln -sf dash /bin/sh

14
OP: mv /usr/local/bin/trash /bin/sh ,sh: Bạn không thể sống với thất bại của chính mình, điều đó đã mang bạn đến đâu? Trở lại với tôi.
LogicalBranch

2
@LogicalBranch làm thế nào để bạn chỉ có 1 upvote cho kiệt tác đó?
vikarjramun

4
@vikarjramun Nghe có vẻ như một kiệt tác nhưng tôi hoàn toàn không hiểu được ...
Nacht - Tái lập lại

@Nacht là từ Avengers: Endgame; một dòng từ nhân vật phản diện, Thanos.
Cullub

@Cullub Oooooh ..... cảm ơn ... Tôi khá chắc chắn rằng tôi đã nhận được ngay bây giờ ...
Nacht - Tái lập lại

7

Không, bạn không phải cài đặt lại hệ thống của mình. / bin / sh chỉ là một liên kết mềm đến vỏ của bạn. readlink -f /bin/sh /bin/bashTrong trường hợp của tôi bash. Di chuyển tập lệnh của bạn và tạo một liên kết mềm đến trình bao yêu thích của bạn.


10
/ bin / sh thực sự nên trỏ đến / bin / dash. Nếu bạn muốn thay đổi hệ thống, hãy sử dụng sudo dpkg-reconfigure dash, theo Làm thế nào tôi có thể tạo / bin / sh trỏ tới / bin / bash? . Cũng lưu ý vỏ hệ thống không phải là vỏ tương tác mặc định.
wjandrea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.