SSH経由でログインしたときに自動的に環境変数を設定する(rootアクセスなし)

SSH経由でログインしたときに自動的に環境変数を設定する(rootアクセスなし)

状態:

仮想マシンでUbuntu 12.04 LTSを実行しています。

私はしばしば大学サーバーの私のアカウントに接続する必要がありますが、端末を開いて 。ssh -Y [email protected]

そこにいる場合は、常に次のコマンドを実行する必要があります

setenv PYTHONPATH "place/stuff/this_goes_on_forever"

他の複数行のコードがあります。

私が望むもの:

  1. 私の主な要求:スクリプトを準備し、SSHを介してサーバーにログインしたときに自動的に実行したいと思います。

  2. これは副次クエリですが(たとえば)新しいエイリアスを使用する場合はalias p="pwd"「使用」しません。pこの場合、入力結果は「コマンドが見つかりません」です。これは単にルートではないからですか、それともSSH経由でログインしているからですか、それとも回避策はありますか?

回避策を試してください。

export PYTHONPATH="..."ローカルファイルに追加しようとしましたが、これは~/.bashrc端末の起動時に設定されPYTHONPATHたことを意味しますが、sshサーバーに移動した後はもう設定されません(まあ、ホストのまったく新しい環境変数があります)。~/.bash_profile後で試してみましたが、成功しませんでした。

私はサーバーのファイルexport PYTHONPATH="..."に追加し、ファイルに追加してみましたが、どちらも機能しません。~/.bash_profile~/.bashrc

サーバーへのルートアクセス権がないため、サーバー上AcceptEnvのファイルを変更できず、読み取り専用です。PermitUserEnvironementsshd_config

もちろん、このコードを置くことができる場所がありますが、どこにいるのか見つかりません。

ベストアンサー1

ここで考慮すべき2つのことがあります。

  1. bashリモートサーバーで使用されていないため、.bashrc合計を.bash_profile読み取ることができません。

  2. sshリモートサーバーでログインシェルを起動します。はい実行bash中で.bashrc読めません。このファイルは、ログインではなく対話型シェルからのみ読み取ることができます。

しかし、多くのログインシェルは~/.profileどのシェルを使用しているのか言及していないので、わかりませんが、~/.profile(リモートサーバー上の)ファイルに次の行を追加すると変数が設定されます。

PYTHONPATH="place/stuff/this_goes_on_forever"

を実行しているため、起動tcshファイルが異なります。からman tcsh

   A login shell begins  by  executing  commands  from  the  system  files
   /etc/csh.cshrc  and  /etc/csh.login.   It  then  executes commands from
   files in  the  user's  home  directory:  first  ~/.tcshrc  (+)  or,  if
   ~/.tcshrc  is not found, ~/.cshrc, then ~/.history (or the value of the
   histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the
   value  of  the  dirsfile  shell  variable)  (+).   The  shell  may read
   /etc/csh.login before instead of  after  /etc/csh.cshrc,  and  ~/.login
   before  instead  of  after  ~/.tcshrc or ~/.cshrc and ~/.history, if so
   compiled; see the version shell variable. (+)

したがって、リモートサーバーsetenvに適切なコマンドを追加する必要があります。~/.tcshrc

最後に、これはより快適なようですので、bashリモートサーバーで使用するシェルを変更してみてはいかがでしょうか?サーバーにログインして実行します。

chsh

/bin/bashこれをデフォルトのシェルに設定すると、これらの問題はすべて消えます。これにより、リモートサーバー~/.profileまたは編集で目的の変数とエイリアスを設定できます。~/.bash_profile

おすすめ記事