10代と話して驚いたこと

シェル、コマンドを実行に関して質問があります。
シェル名だけ「シェル名」だけで実行できたり「./シェル名」としないと実行できなかったりしますが、この違いはどこからくるのでしょうか?
また、「csh シェル名」とするばあいもありますが、これらの明確に違い(使い分け)が分かりません。
ご教授の程宜しくお願いいたします。

A 回答 (5件)

パスを省略すると、環境設定のPATHに記述された順にコマンドを探しに行きます。



「csh シェル名」とするのは、cshにファイルを渡しています。
先頭のcshを省略するためには、ファイルの先頭に #!/bin/csh (環境に応じて変更要)の記述がある
ことと、そのファイルに実行権限がついていることが必要になります。

なお、「./シェル名」とすることは、PATHによって意図したコマンドとは別に存在する
コマンドを呼んでしまうことがないようにする良いマナーです。
特にrootではコマンドはフルパスで実行するよう心がけましょう。

コマンドの場所は、 which で探すことができます。
PATHによって複数のコマンドが呼べる場合は、whereis で探すこともできます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/10/31 16:24

セキュリティーの概念からカレントディレクトリ<./)にある


実行権のあるファイル(スクリプトや実行ファイル)はパスを通していない状態だと
./ファイル名でないと実行できなくなっています。
PATHに設定すれば./なしでも実行はできますがお奨めしません。
    • good
    • 0

補足



「csh シェル名」とする場合は、シェルスクリプトに実行属性が
ついていなくてもcshが実行してくれます。
かりに実行属性がついていなければ当然「./シェル名」としても
実行されません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/10/31 20:10

> シェル名だけ「シェル名」だけで実行できたり「./シェル名」としないと


> 実行できなかったりしますが、この違いはどこからくるのでしょうか?

#1 さんが回答されているとおりですが,'.' をパスに入れ忘れているのではなく,
意図的にパスから外しているとすれば,それはセキュリティ上の配慮です.

'.' がパスに含まれていると,たまたま訪れたディレクトリにある
得体の知れないコマンドをうっかり実行してしまうおそれがあります.
(特に既存のコマンドと同名のコマンドがそこにある (仕掛けられている) 場合)

パスに登録されるディレクトリがすべて絶対パスで指定されており,
かつそれらが信頼できるユーザしか書き込めないディレクトリであれば,
そのような危険は少なくなります.


> また、「csh シェル名」とするばあい

「csh シェルスクリプト名」だと,そのシェルスクリプトに
実行権がなくても読み出し可能なら実行できます.

なので,実行権が設定されておらず,設定しようとしても変更できない
他人のファイルや CD-ROM 上のファイルを実行する場合などに便利です.
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/10/31 20:09

シェルが配置されているディレクトリのパスが通っているか通ってないかの違いだと思います。



パスが通っていれば、./無しで実行できますし、パスが通ってなければ
明示的にシェルの場所を指定する必要があるからです。

csh シェル名の場合は、スクリプトがcshで書かれてるのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/10/31 16:14

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


おすすめ情報