ssh에 로그인하면 ~/.bashrc 스크립트가 올바르게 실행되지 않지만 소스 ~/.bashrc에서는 제대로 작동합니다.

ssh에 로그인하면 ~/.bashrc 스크립트가 올바르게 실행되지 않지만 소스 ~/.bashrc에서는 제대로 작동합니다.

다른 탭에서 열려 있는 SSH 연결을 추적하기 위해 다음 ~/.bashrc 스크립트를 사용합니다.

function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$@\a\]"
  PS1=${ORIG}${TITLE}
}
set-title <SERVERNAME>;
echo "set-title <SERVERNAME>"

나는 내 탭에 대해 이 작업을 수행합니다. SSH가 켜져 있지 않고(사용 set-title LOCAL;) 두 개의 다른 서버에 있습니다. 한 서버에서는 정확히 내가 원하는 작업을 수행하고 탭 이름을 변경하지만 다른 서버에서는 변경되지 않습니다.

set-title <SERVERNAME>;명령줄에 직접 입력하면 탭 이름이 변경되고 로그인할 때 에코가 발생합니다 "set-title <SERVERNAME>". 그리고 source ~/.bashrc이렇게 하면 예상대로 작동하기 때문에 서버에 로그인한 경우에만 작동하지 않습니다.

로그인이 실행 중인 서버 Scientific Linux release 6.7 (Carbon)와 그렇지 않은 서버에서 실행됩니다 CentOS release 6.6 (Final). set-title <SERVERNAME>;로그인 시 .bashrc 스크립트가 올바르게 실행되지 않는 원인은 무엇입니까 ?

답변1

이 질문은 추가 정보 없이는 답변할 수 없습니다.

그러나 가장 가능성이 높은 시나리오는 .bashrc로그인을 통해 소스가 제공되거나 .bash_profile아마도 .profile다음과 같은 것일 수 있습니다.

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

헤더가 설정되지 않은 시스템에서는 PS로그인 스크립트의 이후 단계에서 변수가 다른 값으로 설정됩니다.

이 변수는 실제로 로그인 시에만 실행되는 Bash 구성 파일(또는 구성)에 설정되어야 하며 PS1, 모든 하위 쉘이 해당 값을 상속하도록 변수를 환경 변수로 편집해야 합니다..bash_profile.profileexported

PS1=${ORIG}${TITLE}
export PS1

또는 Bash 셸의 약어를 사용하세요.

export PS1=${ORIG}${TITLE}

관련 정보