私はマルチユーザーシステムを使用しています。私はsudo b / cを持っています。責任があると思います。時には他のユーザーを助けるために切り替えたいのですが、なりすましたbashrc / vimrcがあり、それを維持したいと思います。
ルートの場合、これは非常に簡単です。私.bashrc
:
alias sudo='sudo '
alias -- -i='bash --rcfile $HOME/.bashrc'
export HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
基本的にこれが意味するのは、sudo -i
私がルートになってmyを取得し、代わりに.bashrc
myを維持するということです。これは、vimが色やrcfileなどの項目を見つけるのに適した場所にあることを意味します。$HOME
/home/jeremy
/root
他のユーザーになるのと似たようなことをしたいです。理想的な:
源泉私のもの
.bashrc
; vimを使う私のもの.vim/
そんなvimrc
ことcolors/
パスをハードコードしないでください。あるシステムでは私、
jeremy
他のシステムでは私ですjdr
。これはすべて、最小限の追加入力でエイリアスまたは関数を介して実行できます。
ルートの場合は、-i
他のコマンドを完全に使用して目的の操作を実行できます。 man bash
他のユーザーで操作を実行するためのオプションはリストされていません。man sudo
しかし、それを得るためのオプションはありません.bashrc
。言ったように、この環境を維持してUSERまたはHOMEを設定しないことがsu
有望に見えますが、USERをに設定する必要があります。 usingまたは他のコマンドを追加することはできません。これは、シェルが終了した後ではなく、新しいシェルでコマンドを実行する必要があるためです。簡単に言えば、私が知っているコマンドのどれも私が望むように動作しません。man su
su -m
sudo su -m
root
&&
私が得ることができる最も近いのは、私がエクスポートするすべての変数をsudo -Esu user
作成して維持することです。 my や にこのようなものを追加するuser
ことができますが、これにより権限エラーが発生し、+x を設定するだけでは不十分です。これは、自分のホームディレクトリに対するデフォルト権限が原因で、他のユーザーがそのディレクトリにアクセスできないためです。他のオプションがない限り、これを変更したいと思います。私が望むすべてのユーザーが権限を持っているわけではないので、入ることはできません。export x=". $HOME/.bashrc"
.bashrc
eval $x
user
.bashrc
sudo
簡単に言うと:現在のユーザーのエイリアス、関数、PS1、PROMPT_COMMAND、およびvim構成を維持しながら他のユーザーになります。バッシュ 4.2