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;)、2つの異なるサーバーにあります。あるサーバーでは、まさに私が望むことを行い、タブ名を変更しますが、他のサーバーでは変更しません。

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}

おすすめ記事