Oh My Poshの対応しているシェルを見ていると、XONSHというシェルが目につきました。
調べてみると、XONSHはshellコマンドとPythonコマンドが利用できるシェルのようで、Linux、OSX、Windowsと主要なシステムで動くようです。
普段は主にPowerShellを利用しており、PowerShellには親しみを感じている気がするので、ちょっとXONSHを利用する事によってPythonに親しみが持てるようになるのでは?
と思い浮かんだので、ちょっとWindowsにXONSHをインストールしてみます。
サイト
- XONSH
- xonsh documentation
- Windows
- anki-code / xonsh-cheatsheet
- Awesome Xontribs
- Tutorial: Extensions (Xontribs)
今回実行している環境
- Windows 11 23H2
- xonsh 0.15.1
- Windows ターミナル (プレビュー) 1.20.10822.0
インストール
インストール方法として下記の3種類の記事が用意されていました。
今回はPackage Managerに記載されているpipを使った方法を使い、venvで仮想環境をつくってそこにインストールを行います。
venvで作成した仮想環境へのインストールについて
ドキュメントを読むと、xonsh上で仮想環境 venv , virtualenv, pewとは相性が悪いと記載があります。
xonsh上で仮想環境を利用する場合はVoxを使うのが間違いないようですが。
今回のようにxonsh自体をvenvで作った仮想環境上にインストールについては特に言及されていないので、venvで作成した仮想環境にxonshをインストールしてみます。
何か問題が出てきてたその時はその時です。
PyPiパッケージからインストール
PowerShellコンソールで下記コマンドを実行してインストール。
今回はvenvで仮想環境xnoshを作成して、そこにインストールしています。
py -m venv C:\venv\xonsh
C:\venv\xonsh\Scripts\Activate.ps1
pip install 'xonsh[full]'
gcm xonsh
Windows Terminalで起動できるようにしてみる
Windows Terminalの設定から新しい空のプロファイルを追加
- 名前をxonsh
- コマンドラインをインストールしたxonsh.exeのパスを指定
- タブタイトルをxonsh
- 追加の設定でタイトルの変更を表示しない
上記を入力して保存を選択
Windows Treminalでxonshが起動できるようになりました。
チュートリアル
インストールができたので、ここではチュートリアルの最初の部分をやってみます。
(全部なぞると、長いので)
xonshの起動
先ほどWindows Treminalで起動できるように設定したので、そちらから起動。
もしくは仮想環境をActiveにした状態で下記コマンドでも起動できます。
# xonsh 起動
xonsh
# これでも起動できる
py -m xonsh
プロンプト表示を変更してみる
標準では$PROMPTという変数でプロンプト表示をしているようなので、下記のように更新してみる。
$PROMPT = 'qiita: {cwd} '
Basics
xonshはPythonに基づいているため、下記のようにかけるようです。
四則演算ができる
pythonのライブラリが使える
Dictionaryを使える
if文も書ける
forなどのループもできる
関数やクラスも定義できる
shift+tabでスペース4つ入力
xonshではshift+tabでスペースを4つ入力してインデントを挿入する。
環境変数
環境変数も利用できる
すべての環境変数 ${...}
すべての環境変数を表示したい${...}
Name space conflicts
Windows環境ではディレクトリを参照するコマンドdirとPythonの標準関数dirが競合しているため。
ディレクトリを表示したい場合はdir .
と入力する必要がある。
Windows上のxonshでlsなどのLinuxコマンドを利用するには
- ls not working #3057
- Will xonsh work well as a replacement for cmd.exe on Windows? #3062
- Add cmdix as (optional?) replacement for xoreutils #3178
Windows上のxonshでlsなどのLinuxコマンドを利用するには、そもそもWindows上でLinuxコマンドを実行できるようにする必要があります。
上記issueでは下記の方法について言及されていました。
- Git For Windowsでインストール時にオプションで選択できるUnixToolsを利用する
- BusyBox for Windowsを利用する
- cmdixを利用する
xonshをインストールしたからといって、Linuxライクなコマンドが利用できるようになるといった事はないので、Windows上では上記のケアが別途必要になってきます。
xontrib
Tutorial: Extensions (Xontribs)
xontribはxonshの拡張機能となっており、コミュティが公開している拡張機能が存在しています。
xontribについては、上記サイトに公開されており、デフォルトでは xontrib.coreutils が付属されていました。
デフォルトで付属しているxontrib.coreutilsはいくつかのコマンドを提供しており。
ここではxontrib.coreutilsを読み込んで、提供されているcatコマンドを利用してみます。
上記画像ではUnixコマンドを利用できるようにケアしていないWindows環境で、まずは cat hello.txt
を実行し、catコマンドが利用できない事を確認。
その後、coreutilsを読み込み。
再度catコマンドを実行してcoreutilsのcatコマンドを利用してc:\qiita\hello.txtに配置したテキストファイルを表示しています。
cat hello.txt
xontrib load coreutils
cat hello.txt
総評
Windows環境にインストールした場合、そのままではLinuxコマンドが使えないので別途準備が必要となり。
Windows環境にそのままxonshをインストールすると、考えなければならない部分が多そうです。
そうなってくるとWindows上のWSL2にxonshをインストールする方がよいのでは? といった気もしてきますが、本記事ではWindows上に素直に導入してみました。