yoshさん
どういたしまして。うまく行ったようで良かったです。
ご質問の件ですが、以下が必要かどうかについてです。
- コード: 全て選択
#!/bin/sh
...
exit 0
なぜこれらを付けるかというと、このファイルは小さいながらも立派なプログラムなのです。
ですので、 chmod コマンドで実行可能設定をしました。(パーミッションと呼びます)
試しにこの実行パーミッションを外してみましょう。
端末を開き、保存したファイルのディレクトリへ行き、以下を実行してみます。(ファイル名は set_tap_button.sh だとします。)
- コード: 全て選択
ファイルの詳細情報表示コマンド
ls -l set_tap_button.sh
ファイルの詳細情報が表示される
-rwxrwxr-x 1 ban ban 996 1月 14 09:28 set_tap_button.sh
実行パーミッションを外す
chmod -x set_tap_button.sh
ファイルの詳細情報表示コマンド
ls -l set_tap_button.sh
左側のrwxの文字列の x が - に変わっている(r は読み込み、w は書き込みパーミション)
-rw-rw-r-- 1 ban ban 996 1月 14 09:28 set_tap_button.sh
この状態でログアウト、ログインしてみてください。
タップボタンが無効になっているはずです。
なぜかというと実行パーミッションを外したので、このファイルは単なるテキストファイルになってしまったからです。
ここまで試したらもう一度実行パーミッションをつけて、ログアウト、ログインしましょう。
- コード: 全て選択
chmod +x set_tap_button.sh
これをやってみると、このファイルがプログラムだという実感が湧くはずです。
で、プログラムだとすると、プログラミング言語が何かということが問題になります。
それが sh だと教えているのが一行目です。
#! はプログラミング言語が何かを指定するという記号で、/bin/sh はそのプログラミング言語が保存されているファイルを指しています。
最後の exit 0 は、終了ステータスを返しています。0 はエラーがなかったことを意味します。エラーがあった場合は、例えば exit 1 などとします。
一行目も最後の行も無くても大抵動きますが、(デフォルトで /bin/sh が使われ、終了ステータスが何であってもそれ以前の行は有効なので)、
記述した方が正しい記述です。
参考サイトは最初に読むなら以下が分かりやすいと思います。
http://www.atmarkit.co.jp/ait/articles/0202/05/news001.htmlこのサイトは基本中の基本を書いているので、もう少し詳しく知りたければ「シェルスクリプト」や「/bin/sh」などで検索してください。
次に、
端末は、ウィンドウズのDOSプロンプトのような使い方だとは思うのですが、
ということですが、それはその通りなのですが、たぶんyoshさんが持っているイメージとは違います。
たぶん、端末や DOSプロンプトは GUI(グラフィカルユーザインターフェイス)に「付属しているツール」のイメージだと思いますが、そうではありません。
「付属しているツール」ではなく、「GUI のベース」なのです。
どういう事かというと、Windows も現在は GUI と CUI(キャラクタユーザインターフェイス、DOSプロンプトの事)が絡み合っていて、DOSだけでは起動しませんが、
初期の頃の Windows(Windows 3.1 くらいまで)は先ず MS-DOS を起動し、DOS画面から windows というコマンドを打って Windows を起動していました。
Linux は現在でも GUI(MATE や Cinnamon など)なしでも起動することが可能です。Windowsほど密接に GUI と CUI が絡み合っていないからです。
ですので、GUI を必要としないコンピュータ、例えばサーバや電気製品内部の組み込みなどでは Linux が使われることが多いです。
つまり、CUI が付属しているツールではなく、実は GUI の方が付属しているツールなのです。
解説はこのくらいにして、後でちょっと気がついたことがあるので書きます。
これまで、実行可能なスクリプトファイルを作成し、そのファイルを自動起動プログラムとして登録するとして話を進めてきましたが、
もしかするとこのファイルは不要かもしれません。(試してないのでなんとも言えませんが)
「自動起動するプログラムの追加」の画面を出して、コマンド欄に直接以下を書き込んでも動作するかもしれません。
- コード: 全て選択
synclient TapButton2=3 TapButton1=1
synclient コマンドは一行で TapButton2=3 TapButton1=1 を同時に指定できると書いてあるのを見つけたので、もしかするとこれだけで動作するかもしれません。
やってみなければ分からないので試してみてください。
注)解説はなるべく分かりやすいように書いたので、厳密には正しくないかもしれないので、その点ご了承ください。