Linux Python

Windows版VSCodeのターミナルって結局どれがいいの?

更新日:

職場仲間に「邪道だ」と言われながらも、私はPython開発のメインPCにWindowsを使い続けています。なぜなら・・・

Macを使ったことが無いから

であり、

Windowsで困ったことが無いから

でもあります。Windows環境でのPythonチュートリアルも、探せばネット上にいくらでも出てくるため、困ったことがありませんでした。Web開発に手を出すまでは・・・。

VSCodeのターミナルも、「PowerShellで十分じゃん!」と思ってずいぶん使っていましたが、WSLでUbuntuが使えるようになってUbuntu Bashにしてみたり、、、pip使うときに便利なのでAnaconda promptに変えてみたり、、、行ったり来たりで疲れました(笑)

なんやかんやでVSCodeのターミナルでLinuxコマンドを叩きたい!!となるんですよね。

私の環境は以下の通りです。

  • Windows 10 pro 64bit (1809)
  • Anaconda3 (Python3.6)
  • VSCode 1.33.1
  • Git for Windows 2.21.0

Windows版VSCodeのターミナルって結局どれがいいの?

結論から言うと、私の環境では

Git Bashが今のところ最強です。

  • いやいやPower Shellでしょ!
  • WSLでubuntuもあるがいな!
  • Anaconda Promptざぁ~ます!
  • 普通にコマンドプロンプトでギャス!

どれもごもっともなご意見です。私もユートピアを求めて一通り試しました。それぞれ一長一短があり、快適な部分と、少し使いづらい部分が混在するんですよね。

それぞれのターミナルでの私の感想です。

PowerShell

PowerShellの色味が好きで、Windowsコマンドを叩くケースではPowerShellを愛用していました。WindowsにVSCodeを入れた時にも、デフォルトのターミナルがPowerShellでPython(Anaconda)のパスも通っていたので、不便なく使っていました。

しかし、仕事でIoTシステムを組む機会が増え、IoTデバイスでRaspberry PiなどのLinuxベースのデバイスを使用する機会が増えました。Linuxコマンドを早く覚えたいという思いから、PowerShell卒業となりました。

しかし、コマンドプロンプトにしろPowerShellにしろ、Windowsのコマンドには便利なものがいくつもあります。

たとえばnetというコマンド。これLinuxには無いコマンドですよね?(似たようなのはあるのかな?)このコマンドをうまく使うと、インターネットにつながっていないWindows PCの時刻を起動時に自動で他PCと同期できます。

Ubuntu Bash(WSL)

WSL(Windows Subsystem for Linux)により、Win10上でLinuxが快適に(?)動作する環境が整ってきました。私はちょうどLinux勉強中だったため、天からの授かりもの~!とばかりにWSLのUbuntuを入れて使っていたのですが、、、

WindowsとWSL(ubuntu)の親和性は今一つですね。WindowsとWSL(Ubuntu)の相互のファイルのやり取りが非常にやっかいです。WSL(Ubuntu)のファイルもWindows上でどこに格納されているのかさっぱりわかりません。19年4月のアップデートで、この親和性が前進するようですが、ちょっと使いにくさは感じました。

でも、Windows上でLinuxが公式に動くのって感動しますよね。何ができるのか、いまひとつわかっていませんが^^;

Anaconda Prompt(≒コマンドプロンプト)

WindowsユーザーがPythonをインストールする場合、一番選ばれているディストリビューション(Pythonの配布環境)がAnaconda3だそうです。たしかに、面倒な環境構築やモジュールのインストールも一発で済ませてくれ、大変ゴキゲンな環境が整います。

Anaconda3をインストールすると、Anaconda Promptからpipが使えるようになります。pipはAnacondaに新しいモジュール等をインストールする際に使うパッケージマネージャです。Pythonの環境構築ではpipの出現頻度は高いので、VSCodeのターミナルを一時期Anaconda Promptにしていました。

しかし、やはりLinuxコマンドが叩けないのはつらい・・・。WindowsコマンドとLinuxコマンドを使い分けるほど頭が柔らかくないため、Anaconda Promptも卒業です。

AmacondaPromptで「ls」と叩いては「あちゃー」となり、WSL(ubuntu)で「dir」と叩いては「ぐぬぬ・・・」となっていました。

VSCode+Git Bashのメリットをおさらい

Git Bashを使うメリットを今一度おさらいしてみます。

  • Gitでバージョン管理ができる
  • Linuxコマンドが使える
  • LinuxコマンドからWindows上のファイルにアクセスがしやすい

Gitでバージョン管理ができる

GitとGit Hubの違いすらよくわかっていませんでしたが、Gitを使ってみると、ソースコードの管理が非常に楽になります。Gitはファイルの変更履歴だけでなく、ソースの中身の変化も記録してくれるため、非常に助かります。まだ使い方に慣れていませんが、マンガで分かりやすい!と好評の下記の本を読みながら少しずつ覚えています。

私の職場では、プログラムを共同で書くようなことはありませんが、ソースのバージョン管理は非常に大切だと感じています。前のコードに戻りたい・・・なんてケース、けっこうありますもんね。はやくGitに慣れた~い!

Linuxコマンドが使える

Git for WindowsをインストールするときにGit Bashを有効にすると、Git Bashが使えるようになります。(これがターミナルとして使えます)

このGit Bashターミナルは単独でも起動しますが、下記方法にてVSCodeの統合ターミナルとしても設定できます。Git BashからはLinuxコマンドが使えますから、vimを起動したり、コマンドライン上でファイル操作がしやすいのです。Linuxコマンドは1000以上あるといわれていますが、その一部だけ使えるようになるだけでも、業務のスピードがあがる気がしてます。

「フォルダを作る」、「ファイルをコピーする」といった単純作業って、日常でけっこう多いんですよね。

Windows上のファイルにアクセスがしやすい

WSL(ubuntu)との一番の違いはこの「Windows上のファイルへのアクセス性」でしょう。Git BashはWindowsアプリですので、インストール場所もわかりやすいですし、Windowsファイルも簡単に指定できます。感覚としては、「WindowsのコマンドプロンプトがLinuxになった」という感じ。

WSL(ubuntu)はWindows上で動いているはずですが、お互いのファイルが極力干渉しない構造になっており、ファイルの行き来が面倒です。

これを回避するために、1つのパソコンでWindowsとUbuntuのデュアルブートという方法があるのですが、禁断の手法と言われています。別々に入れたはずが、UbuntuからWindowsの大切なファイルを消してしまったり・・・でWindowsが起動しなくなることもあるんだとか。。。1つのパソコンでいろんなことをやろうとするのは難しいんですね~。

VS CodeターミナルにGit Bashを設定する方法

この記事を見て「VSCodeにGit Bash設定してみようかな~」というあなたの為に、設定方法を解説します。設定してみて使いづらければ、もとのターミナルに戻せばよいだけなので、ぜひ試してみてください。

Git for Windowsのインストール

上記リンクからGit for Windowsをダウンロードし、インストールを開始します。基本的にデフォルト設定で行けます。気を付けるのは下記の1か所。

Git Bash Hereに☑がはいっていることを確認するだけです。基本的に☑入っていると思いますが、もし外れているとGit Bashがインストールされませんので注意が必要です。

インストールされたGit Bashを起動してみます。

pwd

と入力して現在のディレクトリを確認してみます。/c/Users/userと出ました!!普通にWindows上の階層の浅いところにいますね!これがWSL(ubuntu)との大きな違いです。

ちなみに、このGit Bash、いろんな実行ファイルのパスが通っていません。ですので、AnacondaのPythonなんかもそのままでは起動できません。

Pythonなんて知らないよ~と怒られてしまいました。下記の設定でGit BashからPythonを読み出せるようにします。

Git BashにPythonのパスを通す

1.C:Program Files/Git/etc/の中にあるbash.bashrcというファイルをVSCodeで開きます。このフォルダ内のファイル変更は管理者権限が必要なため、VSCodeで開きます。(管理者権限で上書きしやすいため)

bash.bashrcをVSCodeで開くには、VSCode上にドラッグ&ドロップします。

2.bash.bashrcに下記の2行を追記し、保存します。

export PATH=$PATH:~/Anaconda3
alias python='winpty python.exe'

exportはPATHを追加する命令で、aliasは「python」と入力したときにPythonが起動するようにするおまじないです。Git Bashではpython.exeのような実行ファイルを起動するときには

>winpty python.exe

と入力する決まりがあります。これだと面倒なのでaliasを設定して、「python」と入力するだけでpythonが起動するようにするのですね。

これをやっておくと、VSCodeのターミナルにGit Bashを設定したあと、ターミナル上から

>python main.py

と打つだけでPythonプログラムが走るようになります。

さて、aliasの設定まで出来たら、bash.bashrcファイルの保存ですが、上述の通り権限が引っ掛かかり下記のメッセージが出ます。

これが出たら「管理者権限で再実行」ボタンを押すだけで、管理者権限で保存してくれ便利です。ターミナル上で権限を変更してファイルを操作することもできるのですが、Linuxコマンドを駆使する必要があるため、上級テクニックになります。VSCodeで編集すると楽ですね!

VSCodeにてターミナルの設定

1.VSCodeを起動します。起動直後の画面左下の歯車マークをクリックし、表示されたメニューの「設定」をクリックします。

 

2.表示された設定画面の赤枠内「設定の検索」欄に下記を入力します。

terminal.integrated.shell.windows

3.表示された設定項目の赤枠部に下記のパスを入力します。(デフォルトでコマンドプロンプトやPowerShellのパスが入っていると思いますので、これを書き換えます。)

C:\\Program Files\\Git\\bin\\bash.exe

これでVSCodeを再起動してみると下記のようにターミナルがGit Bashになっているはずです。設定、お疲れさまでした!!

設定したけどターミナルがGit Bashにならないんだけど

上記設定後、Git Bashが降臨しない場合は下記の設定を見直してみてください。

Git Bashのパスが違う

C:\Program Files\Git\bin\bash.exe

正しいパスになっていますか?Git Bashは立ち上がるんだけど、なぜか別窓(外ウィンドウ)で立ち上がってしまう、、、という場合は、上記パスのbinが抜けてるかもしれません。Gitフォルダの中にもbash.exeがありますが、これを指定すると別窓でGit Bashが起動します。

cmdが起動してしまう

Git Bashを設定してるはずなのに、ターミナルとしてcmdが起動してしまう場合は、下記の設定を見直してください。

VSCodeには、ワークスペースと言って、作業フォルダを設定できる項目があります。基本的にユーザー設定の設定内容が反映されるのですが、作業フォルダごとのに別のターミナルも設定できるのですね。ユーザー設定のterminal.integrated.shell.windwsにGit Bashを設定後、新規ワークスペースや、新規ファイルはGit Bashがターミナルになっているはずです。

作業途中のフォルダやファイルを開いた状態でGit Bashを設定した場合は、このワークスペースの設定の中のterminal.integrated.shell.windwsも変更しましょう。これで今現在のターミナルがGit Bashに変わるはずです。

参考にしたサイト

Qiita:WindowsのVSCodeでGit Bashをターミナルに設定する

Qiita:Linux入門 ~「パスを通す」とは~

侍エンジニア塾:【絶対理解できる】Gitとは?特徴やできることまとめ!

さいごに

VSCode、人気ですね。

Software design4月号はVSCodeの特集だったためか、いろんな書店で売り切れたそうです。私の地元では、どの本屋にも数冊残っていましたが。。。それはそれでさみしいですね。開発者が少ないってことですから。

VSCodeに適したターミナルを探し求めて早半年、色々変えてみてやっとGit Bashに落ち着きました。個人的にはWindowsパソコンは優秀だと思っていますが、サーバー、Web関係の開発をしだすと、途端にLinux技術が必要になります。Power Shellとお別れしてGit Bashをターミナルに設定しましたが、今のところ快調です。お試しあれ!

タグ

カテゴリー

  • この記事を書いた人
アバター

from-age35

中小企業エンジニアです。35歳で急遽プログラミングを覚えることになり、PythonやJavaScriptなどをゆっくりマイペースに覚えています。先端スキルには疎いですが、楽しくコーディングしてます♪最近の興味は【WEB開発】です

-Linux, Python
-,

Copyright© 35からのプログラミング , 2019 All Rights Reserved Powered by AFFINGER5.