CentOS 5.3クラスタの/home/user_name/bin
(以前の)バージョンではなく、変更されたバージョンのプログラムを呼び出す必要があります。/opt/program_name/current
このプログラムはPythonを使用してtcshスクリプトを作成し、スクリプトを実行します。
問題のプログラムの修正バージョンを呼び出すようにPATHをオーバーライドして、nへのパスを識別できます~/bin
。 、、、、でこれを行いました。ただし、tcshが実行されるたびに環境変数がロードされ、パスがに復元されます。which program_name
~/bi
.bashrc
.profile
.tcshrc
.cshrc
/etc/profile
/opt/program_name/current
/etc/profile.d/program_name.sh
これらのプログラム固有の変数は呼び出し時に設定されます/etc/profile
。
# /etc/profile
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
したがって、program_name.sh
呼び出し時のスクリプトは次のようになります。
# /etc/profile.d/program_name.sh
setenv PATH ${PATH}:/opt/program_name/current
/etc/profile
自分のユーザーアカウントへのアクセスを防ぐにはどうすればよいですか?
私はsuにアクセスできず、他のユーザーはまだ以前のバージョンのソフトウェアを使用しているため、/opt/program_name/current
ソフトウェアを更新したり設定を変更したりすることはできません。/etc/profile.d/program_name.sh
ベストアンサー1
tcshは自動的に読み込まれません/etc/profile
。スクリプトにこれを引き起こすものが必要です。 1つの可能性(唯一の可能性ではない)は、スクリプトが#!/bin/tcsh -l
tcshで始まりログインシェルとして機能することです。それでも読み取ることはできませんが、他のファイルを読み込むことが/etc/profile
できます(CentOSに何が含まれているか、システム管理者がそれをカスタマイズする方法は/etc/csh.login
わかりません)。csh.login
読んだ後、/etc/csh.login
tcshはを読みます~/.login
。設定した方法によっては、~/.login
前、後、または代わりに来ることができます~/.tcshrc
。PATH
したがって~/.tcshrc
。
それでも問題が解決しない場合は、Pythonスクリプトを修正するのが最善の選択肢かもしれません。コードがモジュールにある場合は、PYTHONPATH
元のコードをロードしていくつかの変更するラッパーモジュールを挿入して問題を解決できます。
これが失敗した場合、プログラム実行可能ファイルまたはtcshへのアクセスを「リダイレクト」する簡単な方法はありません。原則としてLD_PRELOAD
。
.cshrc
そのスクリプトを見なければ、より正確に話すのは難しいです。