プロが教える店舗&オフィスのセキュリティ対策術

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はとおっています。

ご教授よろしくお願い致します。

A 回答 (4件)

いや,


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

$0 は?

この回答への補足

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

補足日時:2012/09/12 12:51
    • good
    • 0

相対パスは、カレントディレクトリからの相対です。


実行ユーザが誰かとは関係ありません。
    • good
    • 0

えぇっと,


test.sh の中に
. ./common.sh
とか
cat data.txt
とかの行があって, testUser でログインして実行すると動かないけど root だと動く
ということ?

相対パスでファイルを指定したときに, どこを起点としてファイルを探しに行くか理解できてる?

この回答への補足

testUserでログインした場合は、
/home/testUserが起点となるため、
test.sh内でインクルードしている
. ./common.shは、

. /home/testUser/common.sh となるため、ファイルが参照できないと
なるのでしょうか?

どのユーザでも使用可能とするためには、絶対パスを指定するしかないのでしょうか?

補足日時:2012/09/12 09:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!