状態:
仮想マシンでUbuntu 12.04 LTSを実行しています。
私はしばしば大学サーバーの私のアカウントに接続する必要がありますが、端末を開いて 。ssh -Y [email protected]
そこにいる場合は、常に次のコマンドを実行する必要があります
setenv PYTHONPATH "place/stuff/this_goes_on_forever"
他の複数行のコードがあります。
私が望むもの:
私の主な要求:スクリプトを準備し、SSHを介してサーバーにログインしたときに自動的に実行したいと思います。
これは副次クエリですが(たとえば)新しいエイリアスを使用する場合は
alias p="pwd"
「使用」しません。p
この場合、入力結果は「コマンドが見つかりません」です。これは単にルートではないからですか、それともSSH経由でログインしているからですか、それとも回避策はありますか?
回避策を試してください。
export PYTHONPATH="..."
ローカルファイルに追加しようとしましたが、これは~/.bashrc
端末の起動時に設定されPYTHONPATH
たことを意味しますが、ssh
サーバーに移動した後はもう設定されません(まあ、ホストのまったく新しい環境変数があります)。~/.bash_profile
後で試してみましたが、成功しませんでした。
私はサーバーのファイルexport PYTHONPATH="..."
に追加し、ファイルに追加してみましたが、どちらも機能しません。~/.bash_profile
~/.bashrc
サーバーへのルートアクセス権がないため、サーバー上AcceptEnv
のファイルを変更できず、読み取り専用です。PermitUserEnvironement
sshd_config
もちろん、このコードを置くことができる場所がありますが、どこにいるのか見つかりません。
ベストアンサー1
ここで考慮すべき2つのことがあります。
bash
リモートサーバーで使用されていないため、.bashrc
合計を.bash_profile
読み取ることができません。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