@Artem S. Tashkinovが提案したスクリプトを使用しました。私はこれを自分で書いたが、コンソールで実行されます。」
$sh raw_io.sh:
20: shopt: not found
raw_io.sh:
48: declare: not found
raw_io.sh:
61: Syntax error: redirection unexpected
私はそれを実行可能にし、ダブルクリックして「ターミナルで実行」する必要があることがわかりました。
更新中なので、出力をコピー/貼り付けできません。だからスクリーンショットを作りました:
ダブルクリックで実行されますが、「ターミナルで実行」を押す必要がありますが、端末で直接実行する方法も知りたいです。
~/Desktop$ raw_io
raw_iso: command not found
それでは、これらの起動方法の違いは何ですか?
答え1
というスクリプトを実行するにはmyscript
?
sh myscript # Or sh /path/to/myscript
bash myscript # Or bash /path/to/myscript
perl myscript # Or perl /path/to/myscript
python myscript # Or python /path/to/myscript
など。
これは非常に簡単ですが、スクリプトを実行するためにどのインタプリタを使用するべきかを知る必要があり、間違ったインタプリタを使用しようとするとエラーが発生することを確認しました(代わりに使用するなどsh
)bash
。
より良い方法は、スクリプトが正しいインタプリタ自体を宣言するようにすることです。これは#!
、最初の行の定義を使用して行われます。たとえば、次の行はbash
(特に/bin/bash
)インタプリタとして宣言します。
#!/bin/bash
この機能を使用するには、スクリプトを実行可能にする必要があります。
chmod a+x myscript
その後、指定されたコロンで区切られたディレクトリのリストの1つにある限り、他のプログラムと同じように$PATH
実行できます。その名前だけを使用してください。
myscript
ただし、現在のディレクトリ(とマークされている.
)はそのディレクトリにないため、$PATH
現在のディレクトリでスクリプトを処理する場合は、そのスクリプトを見つけるためのパスを指定する必要があります。これが.
示すもの現在のディレクトリ現在の作業ディレクトリ(つまり同じ場所)への相対パス。
./myscript # Or /full/path/to/myscript
.
一般的ににないのにはそのような理由がありますが、必ず追加する必要がある場合は、最初ではなく最後$PATH
に入れてください。$PATH
(望むよりUNIX履歴には$ PATHの現在のディレクトリは含まれていません。そしてなぜそうです。デフォルトではパスにありませんか?.)
スクリプト名や拡張子は重要ではありません(使用するコマンド名test
がにリストされているシステムディレクトリにすでに存在しない限り$PATH
)。myscript
ここではこれを例として使います。必要に応じて使用してもよいし、使用してもよいmyscript.sh
が、confusion.png
そうではないのでls.exe
必ず必要だとは思わないmyscript.sh
。ただし、一部のGUIでは、ファイル拡張子を使用してファイルの内容を推測することができ、png
非標準的な方法(スクリプトなど)で拡張子を使用すると混乱を招く可能性があります。 GUIがファイルの内容を識別する正しい方法は、次のコマンドと同等のものを使用することですが、file
すべての方法がこのコマンドを実行するわけではありません。
file myscript
最後に、スクリプト操作を終えて再利用しようとしました$PATH
。私の場合は使用しましたが。ls
cp
$HOME/bin
$PATH