プロが教えるわが家の防犯対策術!

Linuxでシェルスクリプトがフルパスだと実行できない

こんにちは
現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。

中身は例えば
#!bin/sh
echo "hello"
とし、ファイル名をtest.shとします。

実行時にカレントからだと上手くいきます。
./test.sh

ただし、フルパスで実行するとうまくいきません。
./home/user/test.sh

エラーは以下
bash: ./home/dv3/tet.sh:No such file or directory

所有者はrootでグループもrootにしてあります。
シェルの権限は755にして、rootで実行しています。

なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか?
パスが必要なコマンドも入っていないのに。。。

どなたかご教授いただけると幸いです。

宜しくお願い致します。

A 回答 (4件)

まぁ、./の意味は、Windowsでの.\と同じなので


MS-DOSで育った人だと、勘違いも起きないんですけどね…

.や..が表すのはカレントディレクトリーやその一つ上のディレクトリーです。

WindowsやMS-DOSではDIRコマンドを使えば、.や..も表示されますし
DIRの結果では、ファイル数表示にも、+2のファイル数が表示されます。
ゆえにMS-DOS時代にはLinux以上に常識でした。

Linuxでは.で始まるファイル名は標準状態で表示されませんから
.と..も、lsコマンドなどで通常表示されません。

ですから「ls -aで表示されるかどうか?」といきなり聞かれても
自信を持って答えられない人も少なくないと思います。
まぁ表示されるんですけどね。今やってみて知りました。


C:が起動ドライブの場合のWindowsでの
C:\に相当するのが、UNIX系OSでの/です。

CMD.EXEを起動すると、C:\Document and Settings\USERが
カレントディレクトリーになっているような気がしますが
(うちにはWindows飼っていないので確認しません)

このディクレクトリーに相当するのが
UNIX系のOSでのcd[RETURN]で移動するホームディレクトリーです。


/home/user/における./home/user/test.shという指定は
C:\Document and Settings\USERにおいて
.\Document and Setiings\USER\test.batと指定するのと同じで
Windowsでは…
C:\Document and Settings\USER\Document and Settings\USER\test.bat
という意味になります。

C:\Document and Settings\USER\test.batに相当するのは
/home/user/test.shなわけです。


余談ですが、cdで戻る/home/userディレクトリーが
UNIXにおける狭義のホームで、文脈によって意味が違ってきます。

.bashrcのような設定ファイルであるドットファイルは
個人設定としてホームディレクトリーに保存しますが
この場合は狭義のホームディレクトリーを意味します。

「個人的なデータはホームディレクトリーに保存する」と言えば
厳密に言えば「ホームディレクトリー下に保存」と表現すべきですが
広義のホームディレクトリーとして解釈するのが普通です。

でも、「~/はホームディレクトリーを示す」と言えば
狭義のホームディレクトリーを意味します。


このへんは、あんまり意識して書かれないことがあります。
そのくらい、ホームディレクトリーの扱い方は
常識となっていますから、おかしいと思った時は
用語や書式やオプションの意味を
マニュアルやウェブの記事で再確認するといいです。
    • good
    • 0

>./home/user/test.sh


先頭の.はカレントディレクトリを示しています。これだとフルパスではありません。
フルパスとは先頭が/で始まります。
どうして./home/user/test.shとしたいなら
cd /
でカレントディレクトリを/に移動してから実行してください。
    • good
    • 0

./home/user/test.sh



"."はカレントディレクトリを示す記号です。つまりこれは絶対パスではなく相対パスなのです。
    • good
    • 0

フルパス場合、./home/.....の先頭の.はいらないはずです。


それだと、カレントディレクトリ下に/homeがあることになります。
    • good
    • 0

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