|
|
LinuxOSの使いこなし術
|
LinuxOSを使いこなすクライアントOSとの違い絶対パスと相対パス"パスが通っている"とは?"/"と"."と".."の意味"."(ドット)ファイルについてワイルドカードと正規表現コマンドの強制終了コマンド操作の補完機能コマンド操作の履歴機能リダイレクトとパイプ属性とパーミッション〜その1属性とパーミッション〜その2アカウント情報ファイルの操作ランレベルについてシステムが起動しないときはハードディスクの増設アプリケーションの導入法 |
"パスが通っている"とはWBEL や CentOS 上で実行される様々な コマンド や スクリプト は、 "/bin/" や "/usr/bin/" などの中に収められた 「実行ファイル」という形で提供されています。 「コマンドを実行する」という行為は、その実行ファイルの名前をタイプすることに他ならないのですが、実行するにあたっては "/bin/" や "/usr/bin/" が カレント ディレクトリである必要はありません。どのディレクトリからでもコマンド名のみで実行可能です。 これはどういう仕組みになっているかというと、 "/bin/" や "/usr/bin/" などのディレクトリに、 「その中の実行ファイルを任意のディレクトリから パス の指定なしに実行できる。」という許可が与えられているからです。 その許可は、 環境変数 "PATH" によって与えられます。 環境変数"PATH"は、 printenv コマンドで調べることができます。
ここで表示される ":" で区切られた各ディレクトリ内の実行ファイルが、パスの指定なしに実行されることになりますが、このディレクトリが 「パスが通っている。」 と表現される場所になります。 複数のパスが通っていて、それぞれのディレクトリに同じ名前の実行ファイルがある場合には、向かって左側に記述されたディレクトリの中のファイルが優先されます。
"パスが通っていない"場所の実行ファイルパス が通っていないディレクトリにある実行ファイルは、明示的にパスを指定する必要があります。 |
|||||||||||
|
|
ということは、 cd コマンド で カレント ディレクトリを"/etc/init.d/"をに移動すれば、パスを指定することなく httpd を実行できそうですが、実はそれはできません。
パスが通っていないディレクトリにある実行ファイルは、たとえカレントディレクトリにあっても必ずパスを明示しなければならないようになっています。
カレントディレクトリの実行ファイルは、"."
なぜこのような「まどろっこしい仕組み」になっているのか不思議に思われるかもしれませんが、実はちゃんとした理由があります。 bash では、既存の コマンド や スクリプト を利用して、様々な実行ファイルを作成することができます。 それを作成するのが自分一人ならばあまり問題にはならないのですが、例えば他のユーザーが"pwd"という名前でホームディレクトリに独自のスクリプトを作成したとします。 そしてもし、カレントディレクトリの実行ファイルをそのまま実行できるのだとすれば、あなたが"root"で ログイン して、そのユーザーのディレクトリ内でpwdを実行してしまったらどうなるでしょう。 pwd でカレントディレクトリを調べるつもりが、別のユーザーが作った全然別のスクリプトが実行されてしまうことになります。 こういう間違いを防ぐために、パスの通っていないディレクトリでは実行ファイルの直接指定による実行ができないようになっている訳です。
|
|
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |