
su -l
すべてのログインシェルファイルを読み取っても現在存在するディレクトリを変更しない同様の機能を実行する方法はありますか?
何らかの理由でSlackware Linuxパッケージを作成しようとしています。ほとんどの場合su
。sbcl
TeX
su -l
su
私は~/opt/haskell-stack-slackbuild
。
$ pwd
/home/<user>/opt/haskell-stack-slackbuild
先ほど実行するとsu
同じディレクトリに戻りますが、実行するとsu -l
現在の場所に移動し、/root
作業中のディレクトリに戻ります。
$ su -l
# pwd
/root
答え1
.profile
ルートシェルでルートソースコードを実行した後に直接ルートソースコードをインポートするとどうなりますか?
$ su
Password:
# . ~root/.profile
#
もちろん、ルートシェルのどこからでもスクリプトをインポートし、必要な方法でルートシェル環境を回復または変更できます。
su
「シェル引数」がコマンドラインで許可されるという事実を使用して、元のシェルから直接ルートシェルにさまざまな設定を挿入する方法がたくさんあります。以下は、ルートシェルを実行するためのコマンドガイドラインを提供する例です。su
この方法でルートの設定ファイルをインポートし、その設定ファイルの環境を使用してシェルを起動します(なぜなら、起動したexec
シェルを置き換えるからですsu
)。
$ su -- root -c ". /root/.profile; exec /bin/sh"
Password:
#