Linux sistemim neden yazdığım her komutu tekrar ediyor?


55

Bir Ubuntu Linux sistemi kullanıyorum ve girdiğim her komut bir sonraki satırda ve ardından komutun çıktısında görüntüleniyor. Örneğin:

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!

Aşağıdaki gibi bilgi istemi ile ilgisi olabileceğini düşündüm (PS1):

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

ancak kaçış dizilerini yönlendirmek için çevrimiçi kılavuzları incelemek bariz bir şey ortaya koymadı.


20
Ayrıca kök olarak giriş yapmış görünüyorsunuz. Yapma bunu!
Toby Speight

5
Evet, çoğu zaman kökünden kaçınmayı biliyorum. Bu, kök gerekli olan atılabilir bir test ortamında VM'dedir.
Chad

9
@ TobySpeight bu hackneyed, ezbere tavsiye.
rackandboneman

2
@TobySpeight Cidden, bunu mutlak bir kural olarak itmeyin. Söyleyin bana, sudo -ibir dizi kök düzeyinde komut çalıştırmak için kullanmanın nesi yanlış ? Özellikle de bir şeyleri ayıklarken?
Duncan X Simpson

2
@ Açıklamaya vaktiniz yoksa, genellikle yararsız olan battaniyeye “tavsiye” vermeyin.
Tim

Yanıtlar:


89

-vBelirlediğiniz gibi görünüyor (bir şeyler çalışıyor set -v).

Bunu tersine çevirmek için koşun 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.

Yerleşik komut hakkında daha fazla bilgi için bashmanpage'e (" Shell Builtin Commands " bölümü altında) bakın set.

Alternatif olarak, yardım metnine doğrudan erişmek için help setiçinden çalıştırın bash.


11
Evet! Kazmak için biraz daha uygun bir alternatif olarak man bash, aynı zamanda yapabilirsiniz help set.
ravron

5
Sen efsane ... Ben bashmanpage içinde kaydırma geçirdiğim zaman ... teşekkürler!
Attie

1
Benim sahip olmadığım bir bashtan sonra ilk emrim her zaman set -o vi. Öyle yazıp set -oviyukarıdaki davranışı elde edersiniz.
Guntram Blohm

neden olarak - ( "./srciptname" yani bunun yerine sadece "./scriptname" nin) senaryo kaynaklandığı var ben şüpheli sonunda yani -v getopts önce o çıkar, bu '+ v set' olmalıdır
jmullee

2
BTW, bulmak set -xo komutları ne göstermek için değişkenleri genişler, çünkü günlük, ya da kontrol akış dışındaki şeylerin hata ayıklama için daha kullanışlı aslında örneğin çalıştırılan echo fooyerineecho $my_string
Peter Cordes

11

En azından Bash 4.3'te, bu komutun şunlara benzer bir etkisi vardır set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

Bunun seni etkileyip etkilemediğini kontrol etmek için kaç

trap -p DEBUG

Çözmek için koşun

trap - DEBUG
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.