sudo su - ユーザー名 -c を使用すると、.bash_profileから.bashrcを取得できません。

sudo su - ユーザー名 -c を使用すると、.bash_profileから.bashrcを取得できません。

私の中には次のものがあります.bash_profile

echo bash_profile
if [ -f $HOME/.bashrc ]; then
    echo Sourcing bashrc
    source $HOME/.bashrc
    echo Sourced bashrc
fi

私の.bashrcファイルはかなり長いですが、最後にecho Path set宣言といくつかのエクスポートがあります。

実行すると、sudo su - username次の結果が表示されます。

bash_profile
Sourcing bashrc
Path set
Sourced bashrc

ただし、実行すると、sudo su - username -c ''次のような結果が表示されます。

bash_profile
Sourcing bashrc
Sourced bashrc

sourceコマンドでこの-cフラグを無効にしたのはなぜですか?実行コマンドを使用するときにPATH変更を適用する必要があります。.bashrcsudo su - username -c

ベストアンサー1

このファイルは実際に対話型シェルからインポートするためのものです。非対話型環境(たとえば、エラーなし).bashrcからインポートできるようにするには、ファイルの上部付近に「対話型テスト」を追加するのが一般的です。 。bash -csu -c

たとえば、.bashrcUbuntuのデフォルトファイル(/etc/skelアカウント作成からコピーされたもの)の先頭は次のようになります。

$ head /etc/skel/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

だからおそらくあなたの.bashrc はい正常に獲得しました。しかし、到着する前に修正してくださいPATH

おすすめ記事