同じUnixまたはLinuxユーザーのさまざまな環境変数のセット

同じUnixまたはLinuxユーザーのさまざまな環境変数のセット

私はを使用しており、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 tcshSSHを介してログイン時に実行される部分をスキップできます。 SSH 鍵認証が設定されている場合、サーバーが~/.ssh/authorized_keysキーの前にプレフィックスを追加すると、command="subuser=nozimica tcsh"SSH はコマンドを実行します。

答え2

SSH を使用して、ローカルコンピュータから環境変数を送信できます。

たとえば、(バージョンexport FOO_USER="$USER"から)または(コマンドラインから)をローカルコンピュータに入力します。以下を含むようにコンテンツを編集します。tcsh.bash_profileFOO_USER=joe ssh remote-host~/.ssh/configSendEnv 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_configAccceptEnv LANG LC_* FOO_USERLC_*LC_FOO_USER=joe.bash_profiletcsh

答え3

私たちのチームと私は共有アカウントに関して同様の問題を経験しました。私たちはわずかに最適化しただけで、基本的に同じ解決策を考えました。

これが私たちがすることです。 (私たちはを使用しますkshが、詳細はわかりませんがtcsh非常に似ていると思います)。

  • .tcshrcほとんど使用できないほど最小限に除去しました。

  • すべてのユーザーが使用するように強制する.tcshrc_cust

そして、元のテキストにtcshrc次の内容を追加します。

 alias u1='source .tcshrc_user1'
 alias u2='source .tcshrc_user2'
 alias u3='source .tcshrc_user3'

全命令より2文字だけ入力する方が便利だと思います。また、チーム全体がこれを行うと、採用が容易になり、メンテナンスも容易になります。

私はこれが完璧な解決策であると言うのではなく、私はしばらくあなたのようなものを探していましたが、これが私が思いつく最高の解決策です。他の人がより良いアイデアを持っていることを願っています:)

関連情報