Linux 시스템이 입력하는 모든 명령을 반복하는 이유는 무엇입니까?


55

Ubuntu Linux 시스템을 사용하고 있으며 입력하는 모든 명령이 다음 줄에 표시되고 명령 출력이 표시됩니다. 예를 들면 다음과 같습니다.

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
또한 루트로 로그인 한 것으로 보입니다. 하지마!
Toby Speight

5
그렇습니다, 나는 대부분의 뿌리를 피하는 것을 알고 있습니다. 루트가 필요한 일회용 테스트 환경의 VM에 있습니다.
Chad

9
@ TobySpeight 이것은 해킹, 충고 조언입니다.
rackandboneman

2
@TobySpeight 진심으로, 절대적인 규칙으로 푸시하지 마십시오. 말해봐, sudo -i일련의 루트 수준 명령을 실행하는 데 어떤 문제가 있습니까? 특히 무언가를 디버깅 할 때?
던컨 X 심슨

2
@TobySpeight 설명 할 시간이 없다면, 종종 도움이되지 않는 담요 "조언"을주지 마십시오.
Tim

답변:


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맨 페이지 ( " Shell Builtin Commands "섹션 아래)를 참조하십시오 set.

또는 도움말 텍스트에보다 직접 액세스하려면 help set내부에서 실행 bash하십시오.


11
네! 파는 것보다 약간 더 편리한 대안으로 man bash도 가능 help set합니다.
ravron

5
당신은 전설 ... bash맨 페이지 에서 스크롤하는 데 걸린 시간 ... 감사합니다!
Attie

1
내가 소유하지 않은 bash를 시작한 후의 첫 번째 명령은 항상 set -o vi입니다. set -ovi그것을 잘못 입력 하면 위의 동작이 나타납니다.
Guntram Blohm

이유에 관해서는-소스가 스크립트 (예 : "./scriptname"대신 ". ./srciptname")가 있다고 의심되는 경우 -v 설정이 해제되기 전에 종료됩니다. 즉, "set + v"
jmullee

2
BTW, 나는 set -x제어 흐름 이외의 것들을 로깅하거나 디버깅하는 데 더 유용하다고 생각한다. 왜냐하면 변수가 확장되어 실제로 어떤 명령이 실행되고 있는지를 보여주기 때문 echo foo이다.echo $my_string
Peter Cordes

11

적어도 Bash 4.3 에서이 명령은 다음과 비슷한 효과가 있습니다 set -v.

trap 'echo "$BASH_COMMAND"' DEBUG

이것이 당신에게 영향을 미치는지 확인하려면 다음을 실행하십시오.

trap -p DEBUG

설정을 해제하려면 다음을 실행하십시오.

trap - DEBUG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.