Comment passer en root et utiliser les mêmes dotfiles que mon user normal?

J'exécute zsh sous Mac OSX, et je veux parfois passer du terminal à l'user root.

Je voudrais garder tous mes files dot, ainsi que la configuration du path d'environnement et les scripts de mon user habituel, et faire beaucoup de choses en tant que root.

J'ai couru sudo bash ou sudo zsh comme moyen simple de passer en root, mais cela a l'inconvénient de ne pas exécuter toutes mes config zsh que j'ai pour mon user habituel.

Quelle est la meilleure façon de "devenir root" pour exécuter une série de commands, et garder toutes les configurations de config / environnement que j'ai pour mon user normal? "

Par exemple, j'ai personnalisé ce qui suit pour mon user normal, et j'aimerais les avoir tous à la disposition de l'user root:

  • .zshrc
  • ~ / bin
  • .aliases
  • Mode vim pour l'input

EDIT: Notez que je suis conscient que je ne devrais pas "courir en tant que root" beaucoup. Et je ne le fais pas. Mais je dois constamment exécuter quelques commands simples en tant que root, et j'ouvre un split tmux juste pour cet usage, et pas d'autre.

Vous ne voulez certainement pas faire ça.

Si votre user root a été pointé vers vos files point d'users normaux, les permissions sur ces files point peuvent changer, ce qui complique les choses pour votre user normal.

Ce que vous pourriez faire à la place est de copyr les files sur le directory racine de vos users root sur chaque connection.

Quelque part dans votre ~ / .zshenv (pour la racine) copyr sur les files et ajuster leurs permissions. De cette façon, vous gardez votre environnement sain et vous pouvez utiliser votre personnalisation.

Personnellement, si je veux exécuter plusieurs commands root je sudo su - mais vous pourriez essayer sudo -E su -p pour préserver l'environnement de l'user.

Avertissement obligatoire!

Il n'y a jamais de bonne raison pour exécuter sudo su . Il est préférable de lancer sudo avant chaque command. Cela dit, je fais sudo su parfois. Mais la règle générale est de ne pas sudo su .

Pour get vos files de points habituels, assurez-vous que sudo ne change pas la variable d'environnement HOME . Cela dépend de la configuration de la compilation et de l'exécution de sudo. Pour conserver HOME , éditez le file sudoers (exécutez visudo , ne modifiez jamais ce file directement!) Et assurez-vous qu'il contient

 Defaults !always_set_home, !set_home Defaults env_keep+=HOME 

(Certains d'entre eux peuvent être inutiles en fonction des options de compilation.) Et bien sûr, ne pas exécuter sudo -i .

Évitez toutefois de faire trop en tant que root. Par exemple, au lieu d'exécuter un éditeur en tant que root, utilisez sudoedit .