adbird(広告鳥) 備忘録

WindowsでLinuxのシェルスクリプト(.sh)を実行

過去の記事からもわかるように、僕はmarkdownからhtmlやpdf等に変換する際に、pandocだけでなく、sedも組み合わせてシェルスクリプトやバッチファイルを作る。

Windows環境の場合、これまではsed for Windowsをインストールして、バッチファイルにsedコマンドを並べて処理していた。しかし、 gnuwin32のsedコマンド使用時に半角記号や文字コードで気をつけること - Qiitaでも紹介されているように、同じsedのはずなのに、一部の記号について、Linuxシェルスクリプトに書いたsedでは問題なく置換してくれるものが、Windowsのバッチファイルに書いたsedではエスケープをつけないと置換してくれない(またはエスケープ方法が分からない)というような状況になっていた。

もういいかげん面倒くさくなってきたので、LinuxでつくったシェルスクリプトをそのままWindowsでも実行したい!!ということで、 CygwinWindowsに導入して、WindowsでもLinuxシェルスクリプトを実行できるようにした。

ちなみにストレージ容量が小さいポータブックでできるように、近年話題のWindows Subsystem for Linux(WSL)は導入しなかった。

Cygwin のインストール

インストールの仕方は、 さよならコマンドプロンプト!UNIXコマンドをWindowsで実行すべくCygwinを導入 あたりを参考に。

インストールの際、chere を追加しておけば、後の作業がはかどる。

PATHを通して、コマンドプロントでもLinuxコマンドが使えるようにする

PATHを通しておけば、WindowsPowerShellコマンドプロンプトからでも、Cygwinに含まれるコマンドが使えるのでいろいろ便利。

コントロールパネルの「環境変数を編集」で、インストールされたcygwinのbinフォルダ(例「C:\cygwin64\bin」)を追加すればOK。

f:id:adbird:20190117231131p:plain

今いる場所でCygwin Terminal を開く

Ubuntuで僕がよく使う、ファイルマネージャーで今、開いているディレクトリ(フォルダ)内で右クリックして「端末で開く」ってやつのCygwinバージョン。

Cygwin Bashをエクスプローラー右クリックで任意のディレクトリをカレントにして起動する方法 - Engineer's Notebookに書いてある通り。

1.Cygwinのインストール時にchereをインストールしていなかったら、もう一度セットアップexeをクリックしなおして、chereをインストール。

2.Cygwin Terminal のアイコン上で右クリックして「管理者として実行」。

3.Cygwin Terminalが開いたら、以下を実行。

$ chere -ian -e "Cygwin Terminal Here" -t mintty

これで、右クリックメニューの中に「Cygwin Terminal Here」が入っている。