RHEL7では、su
シェルを使用するときやシェルユーザーとしてログインするときの起動スクリプトの動作が異なります。/bin/sh
/bin/bash
/bin/sh
/bin/bash
ユーザーのために次のスクリプトを設定しました。
/home/my_user/.profile
echo Hello from .profile
/home/my_user/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
echo Hello from .bash_profile
/home/my_user/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
echo Hello from .bashrc
をsu
指定すると、/bin/bash
次の出力が表示されます。
[batwad@hellodave ~]$ sudo su -s /bin/bash my_user
Hello from .bashrc
[my_user@hellodave batwad]$
.bash_profile
これは彼が処刑されなかったことを意味しますか?結局、「Hello from .bash_profile」は表示されません。
これsu
で指定すると/bin/sh
(ただしに接続されている/bin/bash
)、次のような出力が得られます。
[batwad@hellodave ~]$ sudo su -s /bin/sh my_user
sh-4.2$
エコーがなく、他のシェルプロンプトが表示されます。何を提供しますか?
修正する
redsevenの答えに基づいて追加しようとしましたが、-l
別の動作が発生しました!
[bawtad@hellodave ~]$ sudo su -l -s /bin/sh my_user
Last login: Thu Aug 16 11:44:38 UTC 2018 on pts/0
Hello from .profile
-sh-4.2$
.profile
私が今回使ったのはまさにこれ!最初の試行では、「最後のログイン」セクションは表示されません。
ベストアンサー1
私は同じ問題があり、Ubuntu 20.04.3
その中に次の行があったからです~/.bashrc
。
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
私の解決策は、重要なコマンドをこのブロックの前に移動することでした~/.bashrc
(デフォルトではnvmとnode.jsをロードするために必要な行)。