状況:
仮想マシンでUbuntu 12.04 LTSを実行しています。
私は定期的に大学のサーバーで自分のアカウントに接続する必要があります。これには、ターミナルを開いてssh -Y [email protected]
を使用します。
一度そこに来たら、常に以下を実行する必要があります
setenv PYTHONPATH "place/stuff/this_goes_on_forever"
また、他の数行のコード。
私が欲しいもの:
私の主な要求:スクリプトを準備し、ssh経由でサーバーにログインするたびに自動的に実行するようにしたいと思います。
これはサイドクエリですが、alias p="pwd"
を使用すると(たとえば)新しいエイリアスが「取得」せず、p
と入力すると、「コマンドが見つかりません」という結果になります。これは、rootでないためか、ssh経由でログインしているためなのでしょうか、それとも修正されているのでしょうか?
解決策の試み:
ローカルexport PYTHONPATH="..."
ファイルに~/.bashrc
を追加しようとしました。つまり、ターミナルを開始するとPYTHONPATH
が設定されますが、サーバーにssh
を設定すると、設定されなくなります(さて、私はまったく新しい環境変数のホストを持っています)。 ~/.bash_profile
を試しましたが、うまくいきませんでした。
サーバーのexport PYTHONPATH="..."
ファイルと~/.bash_profile
ファイルに~/.bashrc
を追加しようとしましたが、どちらも機能しませんでした。
サーバーへのrootアクセス権がないため、サーバーのsshd_config
ファイル内のAcceptEnv
またはPermitUserEnvironement
を変更できません。これは読み取り専用です。
このコードを配置できる場所は確かにありますが、どこにあるかわかりません。
ここで考慮すべき点が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
を編集することで、期待どおりに変数とエイリアスを設定できます。
サーバーでcshを使用しているようです。コードをcsh起動に追加してください。 cshの構文はbashとは少し異なり、エイリアスを設定します。詳細については、サーバーでman cshを実行してください。
次のコマンドを実行して、使用しているシェルをテストします。
echo $Shell
Bashであり、自動的に〜/ .bashrcを読み取っていない場合は、〜/ .bash_profileファイルを作成する必要があります。
$ cat .bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
これに関して:
後で〜./。bash_profileを試しましたが、うまくいきませんでした。
プロファイルファイルを入手しようとしていた場合、その構文は正しくありません。環境ファイルを入手するには、次のコマンドを実行します。
. ~/.bash_profile