다른 탭에서 열려 있는 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
.profile
exported
PS1=${ORIG}${TITLE}
export PS1
또는 Bash 셸의 약어를 사용하세요.
export PS1=${ORIG}${TITLE}