터미널 제목에는 sudo라고 되어 있는데 sudo 명령을 실행하고 싶습니다.

터미널 제목에는 sudo라고 되어 있는데 sudo 명령을 실행하고 싶습니다.

그래서 저는 여기에서 모든 게시물을 편집하는 것부터 질문에 답변하는 것까지 제 작업을 정말 잘 해냈기 때문에 이제 질문을 해야 할 때라고 생각했습니다.

기술적 인 정보

배포판: Gentoo
데스크탑 환경: KDE
터미널 에뮬레이터: Kterm

질문

젠투를 오랫동안 사용해본 사람이라면 터미널과 소스코드의 흐름에 익숙할 것입니다. 따라서 KDE에서도 다음과 같은 명령을 사용하여 터미널에 의존하기 시작했습니다.

  • kdesudo kate /etc/portage/make.conf
  • sudo emerge -uDav world

명령이 예상대로 작동합니다. 문제는 kterm의 제목 표시입니다.username:sudo 사용자 이름:sudo 상승된 명령 또는 사용자 이름:elevated 명령을 표시하고 싶습니다..

다음 구성 파일을 사용합니다.

# /etc/profile: login shell setup
#
# That this file is used by any Bourne-shell derivative to setup the
# environment for login shells.
#

# Load environment settings from profile.env, which is created by
# env-update from the files in /etc/env.d
if [ -e /etc/profile.env ] ; then
    . /etc/profile.env
fi

# You should override these in your ~/.bashrc (or equivalent) for per-user
# settings.  For system defaults, you can add a new file in /etc/profile.d/.
export EDITOR=${EDITOR:-/bin/nano}
export PAGER=${PAGER:-/usr/bin/less}

# 077 would be more secure, but 022 is generally quite realistic
umask 022

# Set up PATH depending on whether we're root or a normal user.
# There's no real reason to exclude sbin paths from the normal user,
# but it can make tab-completion easier when they aren't in the
# user's PATH to pollute the executable namespace.
#
# It is intentional in the following line to use || instead of -o.
# This way the evaluation can be short-circuited and calling whoami is
# avoided.
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${ROOTPATH}"
else
    PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
fi
export PATH
unset ROOTPATH

if [ -n "${BASH_VERSION}" ] ; then
    # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
    # including color.  We leave out color here because not all
    # terminals support it.
    if [ -f /etc/bash/bashrc ] ; then
        # Bash login shells run only /etc/profile
        # Bash non-login shells run only /etc/bash/bashrc
        # Since we want to run /etc/bash/bashrc regardless, we source it 
        # from here.  It is unfortunate that there is no way to do 
        # this *after* the user's .bash_profile runs (without putting 
        # it in the user's dot-files), but it shouldn't make any 
        # difference.
        . /etc/bash/bashrc
    else
        PS1='\u@\h \w \$ '
    fi
else
    # Setup a bland default prompt.  Since this prompt should be useable
    # on color and non-color terminals, as well as shells that don't
    # understand sequences such as \h, don't put anything special in it.
    PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
fi

for sh in /etc/profile.d/*.sh ; do
    [ -r "$sh" ] && . "$sh"
done
unset sh

etc/bashrc/bashrc집에 오면 여기에 파일을 삽입하겠습니다...


여기에 새로운 사용자에게 답변을 제공하기 위해 댓글을 남깁니다. 따라서 여기에 처음 오신 경우에도 가장 철저하고 유효한 답변에 대한 점수를 얻으실 수 있습니다. 참고자료와 링크가 포함된 올바른 형식의 답변을 원합니다.

고쳐 쓰다

ketem 이미지

답변1

확실하지는 않지만 kterm아마도 xterm이스케이프 호환일 것입니다. 대부분은 그렇습니다. 그렇다면 프롬프트에 뭔가를 추가해야 합니다.창 제목 설정:

  • 3.1 xterm 이스케이프 시퀀스

  • XTerm 이스케이프 시퀀스를 사용하여 실행 중인 xterm 내에서 창 및 아이콘 제목을 변경할 수 있습니다. 이와 관련하여 다음 순서가 유용합니다.

    • ESC]0;stringBEL-- 아이콘 이름과 창 제목을 문자열로 설정합니다.
    • ESC]1;stringBEL-- 아이콘 이름을 문자열로 설정합니다.
    • ESC]2;stringBEL-- 창 제목을 문자열로 설정
  • ...여기서는 ESC이스케이프 문자( \033)이고 BEL벨 문자( \007)입니다.

인쇄되지 않는 이스케이프 사이에 프롬프트에 넣을 수 있습니다. bash해당 쉘에서 다음을 사용할 수 있습니다.

PS1="\[$(printf '\033]0;"${USER}@${BASH_COMMAND}"\007')\]"

아니면 그런 것을 $PROMPT_COMMAND환경 변수에 넣을 수도 있습니다.

하지만...

확실히 konsole버전은 창 이름이 이스케이프 시퀀스를 통해 설정되도록 허용되는지 여부에 따라 다릅니다. 버전 3 주기 중 어느 시점에서 시퀀스 해석을 중단하고 탭 제목을 변경할 때 ESC]33;Window nameBEL시퀀스만 존중했습니다 .xterm

~부터버전 4.9그래도 konsole최소한 이상한 ESC]30;Tab NameBEL순서를 따라야 합니다. 설정 대화 상자에서 비어 있도록 구성하면 창 이름이 현재 활성 탭에서 자동으로 복제됩니다.

xterm창 제목을 설정하기 위해 더 일반적인 이스케이프를 사용할 수 있는지 여부는 확실하지 않습니다 . 그러나 여기에 제공된 정보가 만족스러운 해결책에 도달하기에 충분하지 않은 경우 버전 4.9에 문서화된 관련 변경 사항에 첨부된 링크를 클릭하면 유용한 정보를 찾을 수 있을 것으로 생각됩니다.여기에서 변경 내역을 확인하세요..

관련 정보