rc.localでbashを実行したときにHOMEが設定されていません。

rc.localでbashを実行したときにHOMEが設定されていません。

rc.local起動時に単純なbashスクリプトを実行する行があります。オペレーティングシステムは、「Witty Pi 2」電源管理ボード(UUGear)を搭載したRaspberry Pi 3B +のRaspbian Stretch 4.14です。

bash /home/pi/Desktop/mount_and_run.bash &

bashスクリプトが実行されていないようで、syslogエラーが最初にファイルを見つけられなかったことに関連している可能性があることを示します。 bashファイルを読み込んでいるという表示はありません。手がかりは次のとおりですvar/log/syslog

May 27 22:04:12 raspberrypi rc.local[417]: /home/pi/Desktop/mount_and_run.bash: line 30: cd: HOME not set

/home/pi端末に入ると、Raspberryは$ HOME()が何であるかを知っているようです。

pwd; echo ~; echo $HOME

.NETを使用してデスクトップからbashファイルを読み取ることもできますnano。以前はこれが起こったことを見たことがなく、以前のケースではスクリプトが正しく機能しましたrc.local。あなたの洞察力と提案された修正に感謝します。 Stretchのインストールが新しくなり、テストして調査するのに数時間かかりました。

ベストアンサー1

問題は検索スクリプトにはありません。問題は、この変数が未定義の環境(実行環境) $HOMEの値に依存していることです。通常、値はログイン後にのみ使用できます(クローン操作などの他の文書化された場所でも使用できます)。rc.local$HOME

$HOME値を暗黙的に(引数なしで)使用するか、チルダ拡張に使用するため、値が必要です。cd

この問題を解決する1つの方法は、$HOMEスクリプトで明示的に設定することです。

HOME=${HOME:-/home/pi}
export HOME

すでに設定されていてnullでない場合は設定されます$HOME/home/pi

実行中のコマンドはrc.localrootとして実行されています。特定のユーザーでスクリプトを実行するには、次のようにします。

su username -c bash /home/pi/Desktop/mount_and_run.bash &

存在するrc.local

特定のユーザーに適切な値を設定して、ログイン全体をsu -l username -c bash ...シミュレートするためにも使用できます。$HOME

おすすめ記事