それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

WindowsターミナルでCygwinのタブを作る

Windows ターミナルでCygwinを使いたい。

最短の方法(WSL内からCygwinへ切り替え)

WSL やCmd.exeから次のコマンドを打ち込めば、簡単にCygwin環境に入れる。

wsl から

/mnt/c/tools/cygwin/bin/bash.exe /bin/xhere /bin/bash ~

cmd.exe / powershell.exe からbatを実行

C:\tools\cygwin\Cygwin.bat

既存のターミナルが切り替わる。

私は、C:\tools\cygwin\ がインストール先なのでbashをそこから起動している。

Windows ターミナルにプロファイルを作る(chere利用)

こっちが王道の解決方法。ターミナルにプロファイルを作ってそこから、起動する。

ただし、今回は chere ( open cygwin here ) を活用して起動する。

なくても可能です(後述)

cygwin / xhere を準備

xhere は chere パッケージに含まれるので

.\cygwinsetup.exe --no-shortcuts --no-admin -q -P chere

コマンドからサクッとパッケージを突っ込めばいい。

ターミナルを設定する場合

次の画面のように、プロファイルを設定する

JSONにプロファイルを直接指定

JSON を直接触るなら、

.profiles.list[] に次のエントリを追加する。

{
    "guid": "{xxxx-xxxx-xxxx}",
    "name": "Cygwin",
    "suppressApplicationTitle": true,
    "commandline": "C:\\tools\\cygwin\\bin\\bash.exe /bin/xhere /bin/bash ~",
    "icon": "C:\\tools\\cygwin\\Cygwin-Terminal.ico",
    "useAcrylic" : true,
    "acrylicOpacity" : 0.6
}

guid は各自で新規作成する。

PS >  [guid]::NewGuid()

chere を使わない場合

chere を使わない場合は、初期ディレクトリを指定しつつ、bashを指定すればいい。

bash.exeを指定しただけ(うまくいかない)

ただし上記の場合は、環境変数が引き継がれず、lsコマンドすら機能しないので、bash の引数などをうまく調整する必要がある。

Cygwin.batを指定する。

Cygwin.bat を指定すればいい。

Windows TerminalでCygwinが起動して嬉しい

便利

更に、Cygwinのショートカットをmintty から windows ターミナルに変えてもいいかもしれない。

まぁそこまでする必要もないか

まとめ

cygwin.batを使えばいいが、WSL内部からだとちょっと面倒くさい。

今回は、WSL内部からCygwin.batを起動出来ないので、xhere コマンドを経由してWSLからでも行えるようにした。そのためprofile からもxhere を使って指定している。

WSLv1 の未来は暗い。

私は、純粋なLinuxがほしいのでなく、WindowsLinuxコマンドで操作したいので、基本的にCygwinで事足りるのだが、WSLv1でも同じことができるので、WSLv1を愛用している。

純粋なLinuxがほしければ、2万出せばMiniPCが買えるし、Raspi4もあるので特に困らない。Hyper-VでわざわざLinux仮想マシンにしてそこからネットワーク経由でWindowsを操作するのはなにか違うと思ってるが、MSは確実性をとってWSLv2にシフトしているし、Hyper-Vを使ってすべてのマシンが仮想環境で並列に動くようになっている。

ほしいのは、Powershell以外のコマンド体系。VimAwkwindowsのファイルを弄ったり、SCPで転送したりしたいわけで、Linux自体がほしいわけじゃない。その欲求を満たしてくれるWSLv1 が今後ずっと使えることはなさそうです。素直にPowershellを覚えるか、Cygwin使って事らしいです。

そのために、CygwinやMSYSをWindowsターミナルでも使えるように準備をしておいた。

WSLv2を使うのであれば、Hyper-VUbuntuいれてMutipassで管理するんだよなぁ。

参考資料

https://qiita.com/yokra9/items/e8b184021091dbabb8a1