質問: いつもお世話になっております。 cronで定期実行しているプログラム内にmecabというツールを使用しているのですが、パスが通っていないとエラーを出します。 ``` Please set MECAB_PATH to the full path to libmecab.so (LoadError) ``` しかし、こちらのパスは既に設定しており、サーバーにログインした状態でパスを実行すると応答があります。(この場合ですと、「mecab」と実行すると入力を受け付けるモードに入ります。) また、cronで設定しているプログラムをログインした状態で実行すると、問題なく実行されます。 ### 考えれられる原因・推測 ・shellはfishを使っておりfishの環境変数は参照出来ない ・cronの場合、実行ユーザーがrootではない(これは違うと思いますが) fishの設定ファイル ``` #環境変数 set -x MECAB_PATH /usr/lib64/libmecab.so.2 ``` ### 環境 Centos6.8 shell fish
回答: cron実行が行われる場合、環境変数は**ユーザー環境のものとまったく別物**(ほぼ設定されない)になります。 どうしても必要な変数は、`NAME=VALUE`の形式で`crontab`自体に書いておきましょう。