ディレクトリを変更せずにルート `su -l` でログインシェルを取得します。

ディレクトリを変更せずにルート `su -l` でログインシェルを取得します。

su -lすべてのログインシェルファイルを読み取っても現在存在するディレクトリを変更しない同様の機能を実行する方法はありますか?

何らかの理由でSlackware Linuxパッケージを作成しようとしています。ほとんどの場合susbclTeXsu -lsu

私は~/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: 
# 

おすすめ記事