गलती से संशोधित `/ बिन / श '


16

मेरे पास यह स्क्रिप्ट थी:

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

तो यह मुझे याद दिलाता है कि मैं क्या करने वाला था, और मैं इसे स्थानांतरित करने के लिए गया /usr/local/bin/और कमांड trashने तर्क का उच्चारण किया, फिर मैंने एक कॉन्टैब जॉब सेट किया , जिससे मुझे यह याद दिलाने के लिए कि मैं रोज क्या करना चाहता था। लेकिन क्रेस्टब ने काम नहीं किया और मैं समझ नहीं पाया कि यह (यह अन्य कार्यों को दोषपूर्ण तरीके से क्यों करता है)।

एक बार जब मैंने अपने टर्मिनल में यह संदेश देखा:

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
मैं अटकलें लगा रहा हूं, लेकिन क्रोन की नौकरियां बहुत सीमित वातावरण के साथ चलती हैं, जिसमें कुछ निर्देशिकाओं के साथ $ PATH भी शामिल है। यही कारण है कि यह टर्मिनल से काम करता है, लेकिन क्रोन के माध्यम से नहीं। (वास्तव में, जब कोई चीज सामान्य टर्मिनल से काम करती है, लेकिन क्रोन के माध्यम से नहीं, तो वह पहली चीज है जिसकी मैं जांच करता हूं।)
एक CVn

1
@ एक CVn; मैं नहीं जानता कि क्या समस्या है लेकिन जब मैं की जगह एसपीडी-कहते द्वारा गूंज और crontab नौकरी सेट: कचरा> ~ / डेस्कटॉप / trash.txt एक फ़ाइल **, यह काम करता है और मेरी डेस्कटॉप पर बनाया जाता है। मुझे लगता है कि मुझे इसके बारे में एक अन्य प्रश्न में पूछना चाहिए।
कॉडिटो एर्गो योग

हां, यदि आप इसके बारे में पूछना चाहते हैं, तो कृपया इसे एक अलग प्रश्न के रूप में पूछें।
एक CVn

'अब, जब मैं एक आदमी पृष्ठ देखना चाहता हूं, तो सिस्टम कहता है: "हैलो, कचरा बिन मत भूलना।" " निष्पक्ष होने के लिए, अधिकांश manडॉक्स बकवास हैं (या समझना मुश्किल है)
LogicalBranch

8
@LogicalBranch मैं असहमत हूं; मैं उनसे प्यार करता हूं; वे शक्तिशाली हैं, ऑफ लाइन गाइड हैं।
कॉडिटो एर्गो योग

जवाबों:


30

उबंटू सिस्टम में, डिफ़ॉल्ट रूप /bin/shसे dashशेल का एक प्रतीकात्मक लिंक है :

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

तो (आपके टर्मिनल एमुलेटर ने बैश शेल का उपयोग किया है, और अपनी गलती से टूट नहीं गया है) आपको बस फिर से लिंक बनाना होगा:

sudo ln -sf dash /bin/sh

14
ओपी: mv /usr/local/bin/trash /bin/sh ,sh: आप अपनी खुद की विफलता के साथ नहीं रह सकता है, जहां यह है कि आप लाने किया? मेरे पास वापस आ जाओ।
लॉजिकलब्रांच

2
@LogicalBranch आपके पास उस कृति के लिए केवल 1 उत्थान कैसे है?
विक्रजमुन

4
@vikarjramun यह एक उत्कृष्ट कृति की तरह लगता है, लेकिन मैं अभी इसे प्राप्त नहीं कर रहा हूँ ...
Nacht - Monica

@ यह एवेंजर्स से नहीं: एंडगेम; खलनायक से एक लाइन, थानोस।
कुल्लू

@Cullub Oooooh ..... धन्यवाद ... मैं कर रहा हूँ यकीन है कि मैं अब ... प्राप्त
रात - को पुनः स्थापित मोनिका

7

नहीं, आपको अपने सिस्टम को पुनर्स्थापित करने की आवश्यकता नहीं है। / बिन / श आपके शेल के लिए केवल एक सॉफ्टलिंक है। readlink -f /bin/sh /bin/bashमेरे मामले में मारपीट की। अपनी स्क्रिप्ट को स्थानांतरित करें और अपने पसंदीदा शेल में सॉफ्टलिंक बनाएं।


10
/ बिन / श को वास्तव में / बिन / डैश को इंगित करना चाहिए। यदि आप सिस्टम शेल को बदलना चाहते हैं sudo dpkg-reconfigure dash, तो कैसे कर सकते हैं, मैं प्रति बिन / श / प्वाइंट टू बिन / बैश कैसे कर सकता हूं? । यह भी ध्यान दें कि सिस्टम शेल डिफॉल्ट इंटरेक्टिव शेल नहीं है।
वेजेंड्रिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.