
連載 シェルスクリプト・ステップ・バイ・ステップ
第2回 実行するにはパスが必要
シェルスクリプトを単に作っただけでは、それを実行することはできません。適切なパスを設定し、実行権を与える必要があります。これらはそれぞれLinuxの基本的な操作手順になりますので、ここでしっかりおさえておくことにしましょう。
さかいひろあき
2000/7/27
| シェルスクリプトを作成する |
Linuxを使っていると複数のコマンドを連続して、しかも特定の条件付きで起動したくなることがあります。あるコマンドを実行後、次のコマンドを実行し、うまく実行された場合、されなかった場合に処理を分けて……などなど。このような場合に使われるのがシェルスクリプトです。今回はこのシェルスクリプトを実際に作ってみましょう。
まずはもっとも基本的なシェルスクリプトを作成してみます。エディタでファイルを編集し、以下のようなファイルを作成してください。
echo "Hello World" |
このたった1行だけです。ファイル名を「helloworld」として保存します。エディタを使わずとも、プロンプトから以下のようなコマンドを実行してファイルを作ってもいいかもしれません。
$ echo 'echo "Hello World"'
> helloworld |
先頭のドル($)は、コマンドラインからの実行を意味していますので、実際に入力する必要はありません。シングルクオーテーション(')やダブルクオーテーション(")が並んでいてなにやら複雑ですが、シングルクオーテーションの中身を「helloworld」というファイルに出力しているだけです。ファイルが作成されたでしょうか?
| ファイルに実行権を付与する |
作成されたファイルはそのままでは実行できません。実行権を付与します。
$ chmod +x helloworld |
これでこのファイル「helloworld」に実行権がつきました。さっそく実行してみましょう。
$ helloworld |
“Hello World”という文字が表示されましたので、実行が成功しました。うまく実行されない人は以下のようにやってみてください。
$ ./helloworld |
今度はうまく実行されましたか? うまく実行されないときはlsコマンドで、作成したファイル名と実行権を確認してみてください。
$ ls -l helloworld |
最初の属性が-rwxr-xr-x となっているところがポイントで、rw-r--r--となっていたりしてxが入っていないと実行されません。もう一度前述のchmodコマンドを実行してみてください。MS-DOSの場合は実行ファイルは拡張子.batという決まりがありましたが、Linuxは実行権さえついていればファイル名に制限はありません。
| 実行パスの指定 |
ついでに、自分がどこのディレクトリにいても(カレントディレクトリがどこであっても)自分で作成したシェルスクリプトを実行できるようにしましょう。まず、ホームディレクトリに、自分で作ったコマンドを格納しておくディレクトリを作成し、そこへ実行コマンドを移動させます。ここではtoolsという名前でディレクトリを作成し、そこへ移動させます。
$ mkdir tools |
そしてパスの設定を変更し、上記ディレクトリを含むようにしておきます。
$ export PATH=~/tools:$PATH |
MS-DOSにはパスという概念がありましたが、Windowsユーザにはなじみが薄いかもしれません。パスとは、実行コマンドが格納されているディレクトリを登録しておくものです。登録しておくと、そのコマンドを実行するときにどこからでも呼び出すことができます。
パスの指定は上記の例のように、指定したいディレクトリ名を(:)コロンで区切って登録します。
なお、bashではなくオリジナルのボーンシェル(sh)の場合は、
$ PATH=~/tools:$PATH |
このように2行で指定する必要があります。ただし、このとき誤って export PATH=~/tools としてしまわないように、 気をつけてください。このようにしてしまうと、すでに指定されているディレクトリがパスからなくなってしまうので、基本コマンド(viやlsなど)が実行できなくなってしまいます。もちろんその場合でもフルパス(/bin/viや/bin/ls)を指定することでコマンドを実行することはできます。
パスを設定したら、その動作を確認してみましょう。さきほどhelloworldは移動したため、もうホームディレクトリの下にはありません(toolsの下にあります)。そこで、ホームディレクトリからhelloworldを実行してみます。
$ cd ~ |
チルダ(~) は自分のホームディレクトリをあらわします。うまく実行されましたか?
パスの設定が正しく行われて、自分の作成したシェルスクリプトが パス上に登録されているかどうかは、whichまたはtypeコマンドで確認すること ができます。
$ which helloworld |
正しく設定されていれば、上記のようにさきほど登録したシェルスクリプトがフルパスで表示されます。表示されない場合は、もう一度パスの設定を確認してみてください。次回ログインしたときも、毎回自分で作成したディレクトリをパスに設定した い場合は、~/.bashrcのファイルを編集し、一番下の行に、
export PATH=~/tools:$PATH |
を1行追加しておきましょう。そうすることによりログインするたびに自動的にパスの設定が行われますので、次回からなにもしなくても、どのディレクトリにいても自分が作ったファイルを実行できることになります。
また、さきほど作成したスクリプトを実行したときに、
$ helloworld |
では実行できなくて、
$ ./helloworld |
なら実行できた人もいると思います。それは、パスにカレントディレクトリが含まれていないからです。カレントディレクトリがパスに含まれていれば、./hellowolrdと書かなくとも実行されます。好みにもよりますが、カレントディレクトリの状態によって実行されるコマンドが変わることを避けるため、UNIXの世界ではパスにカレントディレクトリを含めないことが多いようです。
これでシェルスクリプトを作成し、実行する方法と環境が整いました。 次回からは、シェルスクリプトの基本機能や、よく使われる機能について解説していきたいと思います。
| 連載 ステップ・バイ・ステップ・シェルスクリプト |
| Linux Squareフォーラム プログラミング関連記事 |
| 特集:オブジェクト指向に生まれ変わるPHP5[前編] 現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? |
|
| 特集:Windows開発者に贈る
Kylixの全貌 注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう |
|
| 特集:Kylixプログラミング作法 GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 |
|
| 連載:PHP4で作るWeb-DBシステム(全5回) PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある |
|
| 連載:ステップ・バイ・ステップ・シェルスクリプト(全7回) Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する |
|
| 連載:Kylix
3とDB2で作るWebサービス・アプリ(全5回) Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい |
|
|
TechTargetジャパン
- OSSライセンスの採用傾向に「変化」あり (2012/5/21)
OSS普及の一翼を担ってきたライセンス、GPLファミリー採用の割合が減少傾向にあるそうです。いったいどうして? - ここからFirefoxの反撃が始まる (2012/3/12)
2月のLinux SquareのランキングではFirefoxの記事がダントツのページビューを集め、トップに立ちました - CMakeでMySQLをビルドしてみる (2012/3/8)
ここまでの作業でCMakeを使う準備が整いました。今回はひとまずMySQLをビルドしてみます - MySQLのビルドに欠かせないCMakeを準備する (2012/3/2)
今回は、MySQLをビルドするために欠かせないツール「CMake」をインストールし、使う準備をします
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
