web-dev-qa-db-ja.com

パテ:ログインし、コマンドを実行し、環境変数を変更し、セッションを閉じないでください

リモートホストにログインできるようにPuTTYセッションを構成し、(a)bashを開始します(b)PS1変数を変更します(プロンプトコンテンツ)(c)通常どおりセッションで作業を続行します。

私は試した:

  1. 接続->データ->環境変数[機能しません;セッションは(b)が実行されていないように見えます] [〜#〜] and [〜#〜]
  2. 接続-> SSH->リモートコマンド:PS1 = "some stuff" [セッションのあるウィンドウが数分の1秒間開き、その後閉じます]

何か案は?フォーラムで同様の質問をいくつか調べましたが、役立つものは何も見つかりませんでした。

より一般的には、多くのユーザーが1人のユーザーとしてログインするホストにログインするため、すべてのユーザーが1人のユーザーの「設定」を共有します。 PuTTYにこれらの設定の一部を一時的に変更させる方法を探しています(つまり、PuTTYを使用して開いたセッションに時間制限がかかるようにします)。セッション内で実行されている個人バージョンの.bashrcのようなものです。これが理にかなっていることを願っています。

4
Simon Righley

ターゲットサーバーは 受け入れるように構成されている 1番目のオプションが機能するように環境変数を設定する必要があります。 2つ目は実際には正常に機能していますが、問題はそれが模倣するように設計されていることです

ssh user@foo command

接続し、commandを実行して終了します。 command; bashを指定することで開いたままにすることができますが、変数を設定する場合は機能しません。変数が設定された後、新しいシェルが開始されます。

したがって、環境変数の設定を有効にできるようにサーバーへのルートアクセス権を持たない限り、これを行うために私が考えることができる唯一の方法は、サーバーを~/.bashrc編集し、そこでPS1を定義することです。この行を~/.bashrcに追加します。

PS1="some stuff"

これで、そのサーバーにログインするたびに、プロンプトが設定されます。


これを行う別の方法は、bashセッションに別のrcfileを使用することです。次の行を使用して新しいファイルを作成します。

source /etc/profile
source ~/.bashrc
PS1='some stuff'

たとえば、~/.myps1として保存し、PuTTY設定で、リモートサーバーで実行するコマンドを次のように設定します。

bash --rcfile ~/.myps1

これにより、リモートサーバーで新しいシェルセッションが開き、上記のファイルが読み込まれます。このファイルは、最初に.bashrcを読み取り、次にPS1を設定します。

2
terdon

さまざまな理由でsshd構成を変更できない、および/または+2000サーバーを持っている(そして大量構成ツールにアクセスできない、または他のユーザーの設定を変更できない/したくない)場合は、これが私が思いついた解決策ですと:

enter image description here

PuTTYで目的のセッションをロードし、[接続]> [SSH]に移動します。 「サーバーに送信するデータ」セクションの「リモートコマンド」フィールドで、次を使用します。

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] bash

例:

env -u PS1 PS1="[\u@\h]\\$ " bash

それ以外の方法では機能しなかったため、最初に変数の設定を解除しました。

0
yahol

リモートコマンドをexport PS1='foo'; /usr/bin/bash...のように設定してみてください。これにより、PS1の設定後にbashセッションが生成されます。

0
BowlesCR