cronでも、すべてのユーザーのパスをグローバルに変更します。

cronでも、すべてのユーザーのパスをグローバルに変更します。

CentOS 6を使用してSGEクラスタを設定しています。私のシステム管理者は、RPMを介して(例えば、make installなどを介して)インストールされていないアプリケーションをインストールしており、これらのアプリケーションは非標準ディレクトリにある必要があります/share/apps/install/bin/。この場合、現在このパスはほとんどのセッション(login、qloginなど)に追加されます。 .)、/share/apps/etc/environment.shこのパスを介してPERL5LIBにもいくつかの内容が追加されます /etc/bashrcenvironment.sh

私が経験している問題は、/share/apps/install/bincrontabから呼び出されるような特定のインスタンスに追加されないことです。

私の個人的なcrontabまたは特定のスクリプトまたはcrontabエントリで手動で明示的に設定できることを知っていますが、外部のどこかに設定をしたり、すべてのユーザーへのすべてのパスに非標準ディレクトリを配置したいと思いますPATH=/bin:/usr/bin:/blah/blah:.../etc/profile/etc/bashrc.../bin

ベストアンサー1

PATHに含める値を含むファイルを追加します/etc/profile.d。これらのファイルは、Bash、Csh、Zsh、または tcsh などのシェルから検索されるように設定されます。

はい

PATHに次の値を追加する必要があります。

/usr/local/share/bin

/etc/profile.d/ourstuff.shだから私たちは次の行でファイルを作成しました。

export PATH=/usr/local/share/bin:$PATH

拡張子を持つファイルは、.shBash や Zsh などのシェルから検索されます。拡張子を持つファイルは.cshCsh と tcsh で提供されます。

編集#1 - フォローアップ

OPは次の質問をしました。

はい、しかしクローンの仕事はどうですか?そこでも道を見つける方法はありますか? cronが/etc/profileまたは/etc/bashrcを呼び出さないようです。

これに対する私の答えは次のとおりです。

それを修正することはそうではありません。SHELL=/bin/bashデフォルトのシェル(通常)をオーバーライドするには、cronを設定する必要があります/bin/sh。ユーザー crons (BASH_ENV="$HOME/.bashrc") にこれを設定し、システム crons に設定することもできますBASH_ENV="/root/.bashrc"。これがこの問題を解決する1つの方法です。

私はこれをしないことを強くお勧めします。特定の環境が必要なスクリプトを自分で設定できるようにします。すべての問題を世界中で解決しようとしないでください!

おすすめ記事