グローバル /etc/profile setenv またはエクスポートは .profile のユーザー設定をオーバーライドします。

グローバル /etc/profile setenv またはエクスポートは .profile のユーザー設定をオーバーライドします。

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 -ltcshで始まりログインシェルとして機能することです。それでも読み取ることはできませんが、他のファイルを読み込むことが/etc/profileできます(CentOSに何が含まれているか、システム管理者がそれをカスタマイズする方法は/etc/csh.loginわかりません)。csh.login

読んだ後、/etc/csh.logintcshはを読みます~/.login。設定した方法によっては、~/.login前、後、または代わりに来ることができます~/.tcshrcPATHしたがって~/.tcshrc

それでも問題が解決しない場合は、Pythonスクリプトを修正するのが最善の選択肢かもしれません。コードがモジュールにある場合は、PYTHONPATH元のコードをロードしていくつかの変更するラッパーモジュールを挿入して問題を解決できます。

これが失敗した場合、プログラム実行可能ファイルまたはtcshへのアクセスを「リダイレクト」する簡単な方法はありません。原則としてLD_PRELOAD

.cshrcそのスクリプトを見なければ、より正確に話すのは難しいです。

おすすめ記事