- 締切済み
Linux ファイル 絶対パス、相対パス
Linux CentOSの /mnt/loca/bin の配下にrootで test.sh common.sh data.txtを作成 chmod 755 chown root:rootでファイルもフォルダも設定。 別のユーザ testUserでログインし、 sh test.shを実行すると、sh内で記載されている . ./common.shのインクルードに失敗 data.txtの参照 cat data.txt に失敗してしまいます。 絶対パスに変更し、 . /mnt/local/bin/common.sh cat /mnt/local/bin/common.sh にすると問題なく動作します。 また、rootユーザでログインすると相対パスでも問題なく動作します。 rootユーザでないユーザでは絶対パスにする必要があるのでしょうか? 環境変数PATH に /mnt/local/binはとおっています。 ご教授よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
いや, スクリプトの中で $0 がどうなっているかを調べてみたら ってことなんだけど.
- Tacosan
- ベストアンサー率23% (3656/15482)
$0 は?
- notnot
- ベストアンサー率47% (4900/10359)
相対パスは、カレントディレクトリからの相対です。 実行ユーザが誰かとは関係ありません。
- Tacosan
- ベストアンサー率23% (3656/15482)
えぇっと, test.sh の中に . ./common.sh とか cat data.txt とかの行があって, testUser でログインして実行すると動かないけど root だと動く ということ? 相対パスでファイルを指定したときに, どこを起点としてファイルを探しに行くか理解できてる?
補足
testUserでログインした場合は、 /home/testUserが起点となるため、 test.sh内でインクルードしている . ./common.shは、 . /home/testUser/common.sh となるため、ファイルが参照できないと なるのでしょうか? どのユーザでも使用可能とするためには、絶対パスを指定するしかないのでしょうか?
補足
echo $0 -bash となっています