मेरा लिनक्स सिस्टम मेरे द्वारा टाइप की जाने वाली हर कमांड को क्यों दोहरा रहा है?


55

मैं एक उबंटू लिनक्स प्रणाली का उपयोग कर रहा हूं, और मेरे द्वारा दर्ज की गई प्रत्येक कमांड अगली पंक्ति में प्रदर्शित होती है, जिसके बाद कमांड का आउटपुट होता है। उदाहरण के लिए:

root@dpkube165:~# ls
ls  <--- why is this here?
Desktop  Documents  Downloads 

root@dpkube165:~# date
date  <--- or this?
Mon Mar 19 11:24:59 EDT 2018

root@dpkube165:~# echo "Hello, world!"
echo "Hello, world!" <--- or this?
Hello, world!

मैंने सोचा कि इसे प्रॉम्प्ट के साथ करना पड़ सकता है, जो इस प्रकार है (PS1):

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

लेकिन सीक्वेंस से बचने के लिए ऑनलाइन गाइड की समीक्षा करने से कुछ स्पष्ट नहीं हुआ।


20
आप भी रूट के रूप में लॉग इन करते दिखाई देते हैं। ऐसा मत करो!
टॉबी स्पीट

5
हां, मैं ज्यादातर समय जड़ से बचना जानता हूं। यह एक वीएमई पर एक फेंकने वाले परीक्षण वातावरण में है जहां रूट की आवश्यकता होती है।
चाड

9
@TobySpeight यह हैकनी, रॉट सलाह है।
रैकेंडबॉमनमैन

2
@TobySpeight गंभीरता से, कि एक पूर्ण नियम के रूप में धक्का नहीं है। मुझे बताओ, sudo -iरूट-स्तरीय कमांडों की एक श्रृंखला को चलाने के लिए उपयोग करने में क्या गलत है ? खासकर जब मैं कुछ डिबग कर रहा हूं?
डंकन एक्स सिम्पसन

2
@TobySpeight अगर आपके पास समझाने का समय नहीं है, तो कंबल "सलाह" न दें, जो अक्सर अनपेक्षित होता है।
टिम

जवाबों:


89

ऐसा लगता है कि आपने -vसेट किया है (कुछ चल रहा है set -v)।

इसे उलटने के लिए, दौड़ो set +v

set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
       Without  options, the name and value of each shell variable are displayed in a
       format that can be reused as input for setting or resetting the currently-set
       variables. Read-only variables cannot be reset. In posix mode, only shell
       variables are  listed. The output is sorted according to the current locale.
       When options are specified, they set or unset shell attributes. Any arguments
       remaining after option processing are treated as values for the positional
       parameters and are assigned, in order, to $1, $2, ...  $n.  Options, if
       specified, have the following meanings:

[...]

-v      Print shell input lines as they are read.

अंतर्निहित कमांड पर अधिक जानकारी के लिए bashमैनपेज (" शेल बिल्ड कमांड्स " अनुभाग के तहत) देखें set

वैकल्पिक रूप help setसे bashसहायता पाठ तक अधिक सीधी पहुंच के लिए भीतर से चलाएं ।


11
हां! के माध्यम से खुदाई करने के लिए थोड़ा और अधिक सुविधाजनक विकल्प के रूप में man bash, आप भी कर सकते हैं help set
रैवॉन

5
आप किंवदंती ... समय मैंने bashमैनपेज में स्क्रॉल करने में बिताया है ... धन्यवाद!
अटारी

1
एक बैश शुरू करने के बाद मेरा पहला पहला आदेश है कि मैं खुद नहीं हूं set -o vi। गलतियाँ कि जैसा कि set -oviऔर आपको उपरोक्त व्यवहार मिलेगा।
गुंट्रम ब्लोम

जैसा कि क्यों - मुझे संदेह है कि एक स्क्रिप्ट को खट्टा किया जा रहा है (यानी "./srciptname" के बजाय "बस ./criptname") जो तब इससे पहले कि यह बाहर निकलता है -v, अर्थात अंत में इसे "सेट +" करना चाहिए
jmullee

2
BTW, मुझे set -xकंट्रोल-फ़्लो के अलावा अन्य चीज़ों को लॉगिंग, या डिबगिंग के लिए अधिक उपयोगी लगता है , क्योंकि यह वैरिएबल्स को यह दिखाने के लिए फैलता है कि वास्तव में क्या कमांड चलाए जा रहे हैं, उदाहरण echo fooके लिएecho $my_string
पीटर कॉर्ड्स

11

कम से कम बैश 4.3 पर, इस कमांड का समान प्रभाव पड़ता है set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

यह जाँचने के लिए कि क्या यह आपको प्रभावित करता है, चलाएँ

trap -p DEBUG

इसे परेशान करने के लिए, भागो

trap - DEBUG
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.