私はを使用しており、tcsh
特定のプロジェクトでは、チームのすべてのメンバーが同じユーザーを使用してサーバーに接続しています。 (これは私たちが変更できないものです。)
.tcshrc_cust
これは、コンピュータに接続したときに最初の操作としてロードする独自の.tcshrcファイル(たとえば)を持ついくつかのカスタム環境変数とエイリアスが必要なためです。
source .tcshrc_cust
これはうまくいきますが、それを使用すると問題が発生しますvim
。 vimの内部から(vimを使用)シェルに入ると、:sh
最終的にカスタム環境のない通常のシェルになります。変わりやすい。そしてエイリアス。
そのコンピュータで他のユーザーを使用する以外に、他のソリューションはありますか?
ソリューション(@ Shawn提供):
.ssh/authorized_keys
マイキーをプレフィックスとして追加します。
command="setenv subuser noz; tcsh"
.tcshrc
ファイルの末尾に次の行を作成します。
if ($?subuser) then
source .tcshrc_$subuser;
endif
今、すべてがうまくいきます。
答え1
.tcshrc
特別な環境変数(例subuser
:)を確認し、条件付きでこれを実行できますsource .tcshrc_cust
。ログイン時に実行すると、subuser=nozimica tcsh
その環境変数が取得され、カスタムrcスクリプトが実行されます。また、vim:sh
コマンドで十分です。もっと素敵にすることもでき、source .tcshrc_$subuser
そうすれば誰でもできます。
subuser=nozimica tcsh
SSHを介してログイン時に実行される部分をスキップできます。 SSH 鍵認証が設定されている場合、サーバーが~/.ssh/authorized_keys
キーの前にプレフィックスを追加すると、command="subuser=nozimica tcsh"
SSH はコマンドを実行します。
答え2
SSH を使用して、ローカルコンピュータから環境変数を送信できます。
たとえば、(バージョンexport FOO_USER="$USER"
から)または(コマンドラインから)をローカルコンピュータに入力します。以下を含むようにコンテンツを編集します。tcsh
.bash_profile
FOO_USER=joe ssh remote-host
~/.ssh/config
SendEnv LANG LC_* FOO_USER
.bash_profile
その後、リモートサーバーで(または含まれている変数)を確認し、tcsh
適切なアクションを実行できます。
if [ "$FOO_USER" = 'joe' ]; then
export PS1='--[ Joe rules ]-- \u@\h \w \$ ';
source tcsh.joe;
elif [ "$FOO_USER" = 'jane' ]; then
alias ll='ls -Al';
fi
デフォルトでは、SSHサーバーは許可のみなので、LANG
サーバーで追加する編集がLC_*
不可能な場合は、変数を乱用してハッキングする可能性があります(例:)。それに応じてs(または対応するローカルファイルとリモートファイル)を更新してください。/etc/ssh/sshd_config
AccceptEnv LANG LC_* FOO_USER
LC_*
LC_FOO_USER=joe
.bash_profile
tcsh
答え3
私たちのチームと私は共有アカウントに関して同様の問題を経験しました。私たちはわずかに最適化しただけで、基本的に同じ解決策を考えました。
これが私たちがすることです。 (私たちはを使用しますksh
が、詳細はわかりませんがtcsh
非常に似ていると思います)。
.tcshrc
ほとんど使用できないほど最小限に除去しました。すべてのユーザーが使用するように強制する
.tcshrc_cust
そして、元のテキストにtcshrc
次の内容を追加します。
alias u1='source .tcshrc_user1'
alias u2='source .tcshrc_user2'
alias u3='source .tcshrc_user3'
全命令より2文字だけ入力する方が便利だと思います。また、チーム全体がこれを行うと、採用が容易になり、メンテナンスも容易になります。
私はこれが完璧な解決策であると言うのではなく、私はしばらくあなたのようなものを探していましたが、これが私が思いつく最高の解決策です。他の人がより良いアイデアを持っていることを願っています:)