• 締切済み

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はとおっています。 ご教授よろしくお願い致します。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

いや, スクリプトの中で $0 がどうなっているかを調べてみたら ってことなんだけど.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

$0 は?

shin2072
質問者

補足

echo $0 -bash となっています

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

相対パスは、カレントディレクトリからの相対です。 実行ユーザが誰かとは関係ありません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

えぇっと, test.sh の中に . ./common.sh とか cat data.txt とかの行があって, testUser でログインして実行すると動かないけど root だと動く ということ? 相対パスでファイルを指定したときに, どこを起点としてファイルを探しに行くか理解できてる?

shin2072
質問者

補足

testUserでログインした場合は、 /home/testUserが起点となるため、 test.sh内でインクルードしている . ./common.shは、 . /home/testUser/common.sh となるため、ファイルが参照できないと なるのでしょうか? どのユーザでも使用可能とするためには、絶対パスを指定するしかないのでしょうか?

関連するQ&A

専門家に質問してみよう