AlmaLinux/RedHat ベースのシステムでは常に bashrc をインポートします。

AlmaLinux/RedHat ベースのシステムでは常に bashrc をインポートします。

私のインフラストラクチャは、主にUbuntuシステムと多くのユーザーで構成されています。私たちはリモートアクセスにX2GOを使用するのが好きで、うまく機能します。現在、AlmaLinux 8.8システムがあります。 X2GOでログインして端末を開くと、プロンプトが混乱し、次の内容だけが表示されますbash-4.4$ 。 X2GOでターミナルを開くのはログインシェルではないので(申し訳ありませんが、もうわかりません。編集を参照してください)、Ubuntu/etc/bashrcでは実行されません/etc/profile。システムは、.bashrcユーザーのホームディレクトリのローカルディレクトリなしで動作するように構成されています。したがって、すべてのホームディレクトリはnoにあります.bashrc

私はいつもAlmaLinuxシステムで仕事をしたいと思います/etc/bashrc。これは、新しいユーザーのための新しいホームを作成するメカニズムにアクセスできず、すべてのユーザーにローカルです.bashrc。これを達成する方法? Alma マシンに対する sudo 権限があります。

[編集]もう一度確認した後、次の場所でこのブロックが見つかりました/etc/profile

if [ -n "${BASH_VERSION-}" ] ; then
        if [ -f /etc/bashrc ] ; then
                # Bash login shells run only /etc/profile
                # Bash non-login shells run only /etc/bashrc
                # Check for double sourcing is done in /etc/bashrc.
                . /etc/bashrc
       fi
fi

ベストアンサー1

説明が少し過度ですね。ログインシェルはprofileファイルファミリを読み込みますが、ファイルbashrc自体は読みません。非ログインのシェルなので読みませんがprofile読みますbashrc。 Ubuntuの場合は、はい。.bashrcおそらくatがないため、localがないように設定されている可能性があります/etc/skel。ここにデフォルトファイルを追加し、すべての新規ユーザーのためにそのファイルをコピーできます。

ログインシェルに読み込むことについては、bashrc個人的に必要な設定を代わりに使用することをお勧めします/etc/profile。しかし、そうしたくない場合は/etc/profileソースを作成できます/etc/bash.bashrc。これを次の項目に追加します/etc/profile

if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
  if [ -f /etc/bash.bashrc ]; then
    . /etc/bash.bashrc
  fi
fi

/etc/bash.bashrcシェルが bash を (POSIX モードの bash)/etc/profileとして読み取らず bash を読み込む場合、これはソースになります。/bin/sh私が知っている限り、いくつかのLinuxディストリビューションはデフォルトでDebianスイートのディストリビューションでのみこれを行いますが、他のディストリビューションでもこれを行うことができます。これは/etc/bash.bashrc、シェルが対話型でない場合に終了するコードがあると仮定します。私のアーチでは、次のようになります。

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

同様の行がない場合は、/etc/bash.bashrcbashrcの設定を有効にしたくない非対話型シェルから読み取らないように1つを追加してください。

おすすめ記事