番外編 Linuxでシェルスクリプトの.shファイルをダブル クリックしてPythonの.pyファイルを起動する。
Linux Mintで「端末」というアプリケーションで「pyt」まで入力してからキーボードのタブ キー(Tab)を押すと「python3」と補完してくれます。
そして、半角空白を入力して間を空けて、続けて、同様に、例えば、「端末」というアプリケーションで現在いるカレント ディレクトリに「OpenJTalk.py」以外に「O」から始まるファイルが無い場合は、「O」まで入力してからキーボードのタブ キー(Tab)を押すと「OpenJTalk.py」と補完してくれて、最終的に、「python3 OpenJTalk.py」と成ります。
しかし、何度も「pyt」などを入力するのは少し大変です。特に、何度も利用して、普通に使用している分には正常動作すると分かっている、同じPythonの.pyファイルを実行する場合は、面倒です。
「シェルスクリプト」と呼ばれる、拡張子が.shのファイルを新規作成して、内容に「端末」というアプリケーションへ入力していた「python3 ◯◯◯.py」などを書くと、Linux Mintでは.shファイルをダブル クリックして、「テキストエディタ」というアプリケーションで「表示」するか、「端末」というアプリケーションを起動して実行させるか、非表示の「端末」というアプリケーションで「実行」するか等を選択する確認ダイアログというサブ画面で「実行」をクリックするだけで、Pythonの.pyファイルを実行できます。
キーボードのキーをいくつも打つ必要が有りません。
ただし、「実行」をクリックした場合は、エラー メッセージなどを「端末」というアプリケーションでは確認できない事に留意してください。
「シェルスクリプト」を実行する前に.shファイルを右クリックして「プロパティ」をクリックして選択し、「アクセス権」タブをクリックし、「実行: 」の「プログラムとして実行できる」をクリックしてチェック(✓)を入れる必要が有ります。
さて、「シェルスクリプト」では、ファイルやフォルダの場所を、ルート(/)から始まる絶対パス指定か、「シェルスクリプト」を実行した時に「シェルスクリプト」を置いていたディレクトリからの相対パス指定で、指定して書く必要が有ります。
【シェルスクリプトの例】
◯◯◯.sh
――――――――――――――――――――
#!/bin/bash
python3 ◇◇◇.py
――――――――――――――――――――
◯◯◯と◇◇◇は任意の名前です。
※◯◯◯.shを実行した時に◯◯◯.shを置いていたディレクトリに◇◇◇.pyも置いている場合のシェルスクリプトの例です。
拡張子が.shのファイルであるシェルスクリプトの内容の最初の行には、複数存在する「シェル」のうち、bashという「シェル」の一種を指定する「#!/bin/bash」などの「シバン」または「シェバン」と呼ばれる物を書く必要が有ります。
「シバン」、「シェバン」は、「シャープ バン」または「シェル バン」の略だそうです。
バン(bang)という英単語はエクスクラメーション マーク(!)を意味する場合が有ります。
2行目以降には、Linux Mintの「端末」というアプリケーションで入力していた物を、ルート(/)から始まる絶対パス指定か、「シェルスクリプト」を実行した時に「シェルスクリプト」を置いていたディレクトリからの相対パス指定に修正して、書きます。
例えば、Linux Mintの「端末」というアプリケーションで、よく入力する「cd」は、bashという「シェル」と呼ばれる物の一種の、「コマンド」と呼ばれる物です。
Linux MintなどのLinuxではデフォルトの「シェル」はbashです。
bash以外にも、いくつかの種類の「シェル」が存在します。
「シェル」が違うと書き方自体などが大きく変わる場合が有ります。
ちなみに、bashなどの「シェル」は、例えば拡張子が.pyのPythonのファイルといった、拡張子が.sh以外のファイルの「シバン」、「シェバン」も解釈して処理してくれます。
そのため、拡張子が.pyのPythonのファイルの最初の行に「#!/usr/bin/env python3」などの「シバン」、「シェバン」を書くと、.pyファイルをダブル クリックして、「テキストエディタ」というアプリケーションで「表示」するか、「端末」というアプリケーションを起動して実行させるか、非表示の「端末」というアプリケーションで「実行」するか等を選択する確認ダイアログというサブ画面で「実行」をクリックするだけで、Pythonの.pyファイルを実行できます。
ただし、.pyファイルをダブル クリックする前に、.pyファイルを右クリックして「プロパティ」をクリックして選択し、「アクセス権」タブをクリックし、「実行: 」の「プログラムとして実行できる」をクリックしてチェック(✓)を入れる必要が有ります。
◯◯◯.py
――――――――――――――――――――
#!/usr/bin/env python3
import tkinter
root = tkinter.Tk()
root.mainloop()
――――――――――――――――――――
◯◯◯は任意の名前です。
※tkinterはPythonに標準で含まれているはずですが、無い場合は、ソフトウェアマネージャでPython3-tkをインストールする必要が有ります。
WindowsでもPythonランチャーは.pyファイルの「シバン」、「シェバン」を解釈して処理してくれるそうなので、LinuxだけではなくWindowsでも.pyファイルに「シバン」、「シェバン」を書くのは有益のようです。
Pythonを勉強して大分、経ってから上記を知り、全ての.pyファイルに「シバン」、「シェバン」を追加しようと思ったのですが、「遠い将来にPython4が出来たら、また書き直しかぁ」と考えて、やめました。
ただ、「遠い将来にPython4が出来たら、Python3のコードの一部をPython4で動くように書き直す必要が有るかもしれないので、その際に、ついでに、「シバン」、「シェバン」も書き直せば良いのでは……?」とも思い、迷っております。
ただし、Pythonの.pyファイルに「シバン」、「シェバン」が有ると、「端末」というアプリケーションでファイル指定だけで実行できます。
「端末」というアプリケーションでの、「シバン」、「シェバン」が有るPythonの.pyファイルの実行例
――――――――――――――――――――
./◯◯◯.py
――――――――――――――――――――
◯◯◯は任意の名前です。
ちなみに、Pythonの.pyファイルの文字コードがUTF-8以外の場合は、「シバン」、「シェバン」の次の行以降、2行目以降に、決められた形式で文字コードを書く必要が有るそうです。
しかし、どのプログラミング言語でも、現在では、UTF-8という文字コードが主流、常識だと思います。




