「Windowsでのターミナル環境」の版間の差分

Notion-MW
タグ: 差し戻し済み
Notion-MW
タグ: 手動差し戻し
22行目: 22行目:
たとえばテキストファイルに以下のように書いておけば、mpvが起動される。<strong>末尾の半角スペースも入れること。</strong>
たとえばテキストファイルに以下のように書いておけば、mpvが起動される。<strong>末尾の半角スペースも入れること。</strong>


<syntaxhighlight lang="python">
<syntaxhighlight lang="vb.net">"C:\Users\username\Softwares\mpv\mpv.exe" </syntaxhighlight>
 
vb.net
"C:\Users\username\Softwares\mpv\mpv.exe" </syntaxhighlight>
Windows版のmpvは、設定ファイル(mpv.conf)やプラグインなどを自身が存在するディレクトリから読み込むが、それらの動作を維持したままで、.pathにはmpv.exeという呼び出し専用のファイルだけを配置することができる。
Windows版のmpvは、設定ファイル(mpv.conf)やプラグインなどを自身が存在するディレクトリから読み込むが、それらの動作を維持したままで、.pathにはmpv.exeという呼び出し専用のファイルだけを配置することができる。


32行目: 29行目:
<code>myprogram somecommand arg1 arg2 ...</code>と呼び出されたときに、<code>C&#58;\path\to\somecommand arg1 arg2 ...</code>をかわりに実行したい、ということがある。例えば複数の実行ファイルがまとまって提供されるような場合である。このときは以下のようなmycommand.txtをペアにすればよい。この場合はパスを直接引数につなげるため、<strong>末尾に半角スペースを入れてはいけない。</strong>
<code>myprogram somecommand arg1 arg2 ...</code>と呼び出されたときに、<code>C&#58;\path\to\somecommand arg1 arg2 ...</code>をかわりに実行したい、ということがある。例えば複数の実行ファイルがまとまって提供されるような場合である。このときは以下のようなmycommand.txtをペアにすればよい。この場合はパスを直接引数につなげるため、<strong>末尾に半角スペースを入れてはいけない。</strong>


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">C:\path\to\</syntaxhighlight>
 
python
C:\path\to\</syntaxhighlight>
ところで、<code>C&#58;\path\to\</code>の部分に空白文字が含まれている場合、このままではパスが正しく認識されない。通常はパス全体をダブルクォーテーションで囲うことでこれを回避するが、今回は与えられた引数のどこにダブルクォーテーションを挿入するかが自明ではない(<code>myprogram someprogram&quot;</code>と入力させるという方法もあるが美しくない)ため、<strong>半角スペースを含まない別名</strong>(8.3形式)<strong>を使う</strong>のがよいだろう(短い名前については[[Windowsのパス長さ制限に関して|Windowsのパス長さ制限に関して]]も参照)。例えばProgram Filesなら普通は「PROGRA&#126;1」になっているはずである。以下はGit Bashでのtxtファイルの例である。
ところで、<code>C&#58;\path\to\</code>の部分に空白文字が含まれている場合、このままではパスが正しく認識されない。通常はパス全体をダブルクォーテーションで囲うことでこれを回避するが、今回は与えられた引数のどこにダブルクォーテーションを挿入するかが自明ではない(<code>myprogram someprogram&quot;</code>と入力させるという方法もあるが美しくない)ため、<strong>半角スペースを含まない別名</strong>(8.3形式)<strong>を使う</strong>のがよいだろう(短い名前については[[Windowsのパス長さ制限に関して|Windowsのパス長さ制限に関して]]も参照)。例えばProgram Filesなら普通は「PROGRA&#126;1」になっているはずである。以下はGit Bashでのtxtファイルの例である。


<syntaxhighlight lang="python">
<syntaxhighlight lang="vb.net">C:\PROGRA~1\Git\usr\bin\</syntaxhighlight>
 
vb.net
C:\PROGRA~1\Git\usr\bin\</syntaxhighlight>
これにより、PATHを変更せずとも、例えば<code>gb grep</code>などとするだけでGit Bashの<code>grep</code>を呼び出すことができるようになる。gitやnpmやbusyboxやmagick(ImageMagick)のようにサブコマンドを指定して使うプログラムは多くあるが、これと同じような使用感になる。プレフィックスを設けることでそれぞれの名前の集合を別々に管理して衝突を防ぐ、という意味では、多くのプログラム言語で採用されている名前空間(namespace)に近い発想かもしれない。(コマンドにおけるこのような手法に特に名前は付いていないと思う。)
これにより、PATHを変更せずとも、例えば<code>gb grep</code>などとするだけでGit Bashの<code>grep</code>を呼び出すことができるようになる。gitやnpmやbusyboxやmagick(ImageMagick)のようにサブコマンドを指定して使うプログラムは多くあるが、これと同じような使用感になる。プレフィックスを設けることでそれぞれの名前の集合を別々に管理して衝突を防ぐ、という意味では、多くのプログラム言語で採用されている名前空間(namespace)に近い発想かもしれない。(コマンドにおけるこのような手法に特に名前は付いていないと思う。)


48行目: 39行目:
上記と若干似ているが、PATHをはじめとした環境変数を変えることでプログラムがうまく実行されるようにしたい、という場合もある。この場合は、テキストファイルを以下のようにすればよい(Git Bashのフォルダをパスに追加し、<code>MYVAR</code>に<code>value1</code>をセットする例)。末尾の半角スペースはあってもなくてもいい。
上記と若干似ているが、PATHをはじめとした環境変数を変えることでプログラムがうまく実行されるようにしたい、という場合もある。この場合は、テキストファイルを以下のようにすればよい(Git Bashのフォルダをパスに追加し、<code>MYVAR</code>に<code>value1</code>をセットする例)。末尾の半角スペースはあってもなくてもいい。


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">cmd /c path C:\Program Files\Git\usr\bin;%PATH% & set MYVAR=value1 & </syntaxhighlight>
 
python
cmd /c path C:\Program Files\Git\usr\bin;%PATH% & set MYVAR=value1 & </syntaxhighlight>
こちらは、先ほどと違って、内部でGit Bashのコマンドを使用する(Git Bashとは無関係な)プログラムを実行する際などに有用である。
こちらは、先ほどと違って、内部でGit Bashのコマンドを使用する(Git Bashとは無関係な)プログラムを実行する際などに有用である。


また、これに類似のケースとして、環境変数の設定などを行うバッチファイルが既に用意されていてそれを使いたいという場合もある。例えば以下のようなテキストファイルを用いれば、実質的にVisual Studioの開発者コマンドプロンプト(Developer Command Prompt for VS 2022)の内部で与えられたコマンドを実行してくれるプログラムが作れる。
また、これに類似のケースとして、環境変数の設定などを行うバッチファイルが既に用意されていてそれを使いたいという場合もある。例えば以下のようなテキストファイルを用いれば、実質的にVisual Studioの開発者コマンドプロンプト(Developer Command Prompt for VS 2022)の内部で与えられたコマンドを実行してくれるプログラムが作れる。


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">cmd /c "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" &</syntaxhighlight>
 
python
cmd /c "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" &</syntaxhighlight>
Linuxでも、例えば特定のvenv仮想環境の中で与えられたコマンドを実行するシェルスクリプトを全く同じ発想で作ることができる。
Linuxでも、例えば特定のvenv仮想環境の中で与えられたコマンドを実行するシェルスクリプトを全く同じ発想で作ることができる。


72行目: 57行目:
上記の例は、いずれもバッチファイルを使って似たようなことが実現できる。例えばGit Bashならそれぞれ
上記の例は、いずれもバッチファイルを使って似たようなことが実現できる。例えばGit Bashならそれぞれ


<syntaxhighlight lang="python">
<syntaxhighlight lang="vb.net">@C:\path\to\directory\%*</syntaxhighlight>
 
vb.net
@C:\path\to\directory\%*</syntaxhighlight>


<syntaxhighlight lang="python">
<syntaxhighlight lang="vb.net">@cmd /c "path C:\path\to\directory;%PATH% & %*"</syntaxhighlight>
 
vb.net
@cmd /c "path C:\path\to\directory;%PATH% & %*"</syntaxhighlight>
のようにする(<code>@</code>は、echo offを一時的に行うために必要である)。
のようにする(<code>@</code>は、echo offを一時的に行うために必要である)。