ルートに切り替えて、通常のユーザーと同じドットファイルを使用するにはどうすればいいですか?

ルートに切り替えて、通常のユーザーと同じドットファイルを使用するにはどうすればいいですか?

私は Mac OSX で zsh を実行していますが、ターミナルで root ユーザーに切り替えたい場合があります。

すべてのドットファイル、環境パス構成、スクリプトを通常のユーザーから保持し、多くの作業を root として実行したいと思います。

私はこれまで、ルートに切り替える簡単な方法としてsudo bashまたは を実行してきましたsudo zshが、これには、通常のユーザー用に持っているすべての zsh 設定が実行されないという欠点があります。

一連のコマンドを実行するために「root になる」最適な方法と、通常のユーザーのすべての構成/環境設定を保持する方法は何ですか?

たとえば、私は通常のユーザー用に次のものをカスタマイズしましたが、これらすべてを root ユーザーにも利用できるようにしたいと考えています。

  • .zshrc
  • ~/bin
  • .エイリアス
  • 入力用のvimモード

編集: 頻繁に「root として実行」すべきではないことは承知しています。実際、私はそうしていません。しかし、時々、いくつかの簡単なコマンドを root として常に実行する必要があるため、この用途のためだけに tmux 分割を開いています。

答え1

sudo通常のドットファイルを取得するには、環境変数が変更されないように注意してくださいHOME。これが発生するかどうかは、sudoのコンパイル時および実行時の構成によって異なります。 を保持するにはHOMEsudoersファイルを編集し( を実行しvisudo、このファイルを直接編集しないでください)、次の内容が含まれていることを確認します。

Defaults !always_set_home, !set_home
Defaults env_keep+=HOME

(コンパイル オプションによっては、これらの一部は不要な場合があります。) もちろん、 は実行しないでくださいsudo -i

ただし、root としてやりすぎるのは避けてください。たとえば、エディターを root として実行する代わりに、 を使用しますsudoedit

答え2

おそらく、あなたはこれをしたくないでしょう。

ルート ユーザーが通常ユーザーのドット ファイルを参照している場合、それらのドット ファイルの権限が変更される可能性があり、通常ユーザーにとって状況が複雑になる可能性があります。

代わりに、ログインするたびにファイルをルート ユーザーのホーム ディレクトリにコピーすることもできます。

~/.zshenv (root 用) のどこかにファイルをコピーして、権限を調整します。こうすることで、環境を正常な状態に保ち、カスタマイズを使用できるようになります。

個人的には、複数のルート コマンドを実行したいのですが、ユーザーの環境を保持してみるsudo su -こともできます。sudo -E su -p

必須の警告です!

逃げる理由なんてないsudo suより良いsudoすべてのコマンドの前にを実行します。そうは言っても、sudo su時々は実行します。しかし、一般的なルールは を実行しないことですsudo su

関連情報