Bash 스크립트에서 터미널을 시작할 때 프롬프트 변경(그러나 모든 터미널에 영향을 미치지는 않음)

Bash 스크립트에서 터미널을 시작할 때 프롬프트 변경(그러나 모든 터미널에 영향을 미치지는 않음)

두 개의 터미널이 설치되어 gnome-terminal있고 xfce4-terminal.

>xfce 터미널이 시작 시 간단한 프롬프트만 표시하기를 원합니다 . 프롬프트는 gnome-terminal동일하게 유지되어야 합니다(따라서 bashrc수정이 없다고 가정합니다).

xfce-terminal일부 매개변수가 있는 스크립트나 다른 터미널에서 시작해 도 괜찮습니다 .

나는 시도했다:

xfce4-terminal -x export PS1='> '

그러나 이는 오류를 발생시키며 분명히 불가능합니다.

약간 해킹되더라도 어떤 솔루션이라도 환영합니다.

답변1

이름을 변경 .bashrc하고 상위 프로세스의 이름을 테스트하십시오.

parent_process=$(ps -o comm= -p $PPID)
parent_process=${parent_process##*/}
case "$parent_process" in
  xfce4-terminal) PS1='> ';;
esac

또 다른 방법은 환경 변수를 설정하는 것입니다. run PROMPT_THEME=plain xfce4-terminalPROMPT_THEMEtest .bashrc거기에서 변수를 설정 해제하거나 최소한 내보내기를 취소할 수 있습니다. 그렇지 않으면 첫 번째 터미널에서 시작된 터미널에도 설정됩니다.

case $PROMPT_THEME in
  plain) PS1='> ';;
esac
export -n PROMPT_THEME

의 경우 xfce4-terminal첫 번째 인스턴스를 제외하고는 작동하지 않습니다. 후속 인스턴스는 실행 중인 인스턴스에 새 창을 열도록 알리므로 새 인스턴스는 실행 중인 인스턴스에서 환경을 상속합니다. (예!) 유틸리티를 사용하여 터미널에서 실행되는 명령을 통해 환경 변수를 설정할 수 있습니다 env.

xfce4-terminal -x env PROMPT_THEME=plain bash

답변2

어떤 터미널이 열려 있는지 확인하세요.

 case "$TERM" in
    gnome-terminal ) PS1="[\h] \W > \[\033]0;[\u@\h] \w\007\]"
        ;;
    xfce4-terminal ) PS1="> "
        ;;
    esac

답변3

~/.bashrc설정되어 있지 않은 경우 PROMPT_COMMAND다음으로 시작할 수 있습니다 xfce4-terminal.

PROMPT_COMMAND='PS1="> "; unset PROMPT_COMMAND' xfce4-terminal

답변4

한 가지 방법은 현재 BASH PID($$를 통해 얻음)로 시작한 다음 PPID를 얻는 등 bash 셸의 조상이 되는 터미널을 찾을 때까지 계속하는 것입니다. 이 정보를 바탕으로 PS를 설정할 수 있습니다.

일반적으로 쉘의 상위는 터미널입니다.

내 시스템의 개념 증명(Debian 7).

$ PARENT_PID=$(ps --pid=$$ -o ppid --no-headers)
$ ps --pid $PARENT_PID -o command --no-headers
gnome-terminal -x /bin/sh -c cd '/home/XXXX/Desktop' && exec $SHELL

따라서 내 시스템에서는 쉘의 부모를 보면 그 쉘이 gnome 터미널에서 실행된다는 것을 알 수 있습니다.

한 줄로 요약하면 다음과 같습니다.

$ ps --pid $(ps --pid=$$ -o ppid --no-headers) -o command --no-headers
gnome-terminal -x /bin/sh -c cd '/home/XXXX/Desktop' && exec $SHELL

나는이 줄을 내.bashrc

MY_TERMINAL=$(ps --pid $(ps --pid=$$ -o ppid --no-headers) -o command --no-headers | cut -f 1 -d " ")

MY_TERMINAL포함되어 있음 을 확인했습니다 gnome-terminal.

그러니 괜찮을 것입니다.

관련 정보