📝

Nushell + Starshipで最速Windowsターミナル環境構築

6 min read

Rust製の高速ターミナル+デコレーションツール

------------------- ↓ 前書はここから ↓-------------------

fishを使いた過ぎてMSYSを使う暴挙に出たが、
やっぱりもっさり感が拭えない。

使い勝手は滅茶苦茶いいので、
そこは目をつぶろうかと思ったが、
別にいいのがあったのでそれを試す。

それが

Nushell + StarShip

fishと同等まではいかないが、
コード補完やgitのデコレーションなどが備わっている。
そして動作は最速安定のRust製。

ということで試してみることにした。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

wingetをインストール

Windows10を最新にしておくのが前提

ストアページからアプリ インストーラーをインストールする

Nushellのインストール

wingetからインストール。
Path調整のためpowershellを一度閉じる
管理権限も欲しいのでgsudoを一緒に入れておく

powershell
winget install gsudo
gsudo winget install Nushell.Nushell
exit

Nushell起動

powershellを再度起動してNuShellを起動

powershell
nu --version
  0 │ version            │ 0.33.0
nu

(^^♪ もうすでにいい感じ

一旦powershellに戻っておく

nushell
exit

StarShipのインストール

(令和3年12月1日更新、starshipバージョン1.0.0対応)

こちらはインストーラではなく手動で入れる。
zipファイルをダウンロード、解凍してNuShellと同じディレクトリに保存する。
(Pathが通るからね)
scoop入れてる人はscoopコマンドでも可

以下のサイトより最新版をダウンロードする
その際、~~x86_64-pc-windows-msvc.zipという名称のファイルを選択する

https://github.com/starship/starship/releases/latest
powershell
Invoke-WebRequest -Uri https://github.com/starship/starship/releases/latest/download/starship-x86_64-pc-windows-msvc.zip -o starship.zip
Expand-Archive -Path .\starship.zip

program filesには管理者権限が必要なので、
管理者権限のPowershellを起動する

powershell
gsudo powershell
cd starship
cp .\starship.exe 'C:\Program Files\nu\bin\'
exit

Nushellを起動してパスを確認

powershell
nu
starship --version
  starship 1.0.0
  tag:v1.0.0
  commit_hash:dfbf861f
  build_time:2021-11-09 21:36:45 +00:00
  build_env:rustc 1.56.1 (59eed8a2a 2021-11-01),stable-x86_64-pc-windows-msvc (default)

StarShipの設定

NuShell起動してStarShipを初期プロンプトに設定。
初期設定を有効にするためNuShell再起動

nushell
mkdir ~/.cache/starship/
config set startup ["starship init nu | save ~/.cache/starship/init.nu" "source ~/.cache/starship/init.nu"]
nu

(´▽`) かわE~

------------------- ↓ 後書はここから ↓-------------------

Nerd Fontsのインストール

StarShipのインストールマニュアルには、
Nerd Fontsを先に入れてくれとある。

Nerd Fonts patches developer targeted fonts with a high number of glyphs (icons). Specifically to add a high number of extra glyphs from popular ‘iconic fonts’ such as Font Awesome, Devicons, Octicons, and others.
https://www.nerdfonts.com

開発者向けだけどファンシーなフォント群って感じか。
ダウンロードページから好きなもの選べって感じだが、
選べと言われると困るので、
ここでは「 FiraCode Nerd Font」を選択。
ファイルをダウンロードと大量のフォントファイルが出てくるので、

Fira Code Regular Nerd Font Complete Windows Compatible

という名称のOpenType Fontを右クリックしてインストール。
Windows Terminalなどのフォント設定を調整する。

NuShellのLinuxやMacの対応

さて、Windowsで使うことを前提に記事を書いたが、
LinuxやMacももちろんサポートしている。

Linuxの場合

Rustをインストールしてcargoビルドをかける
Linuxbrewをインストール済みならばMac版と同じコマンドでインストールできる

sudo apt install build-essential pkg-config libssl-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
export PATH=$HOME/.cargo/bin:$PATH
cargo install nu
nu --version

ArchLinuxの場合はyayの NuShell-bin というパッケージを使用する

Macの場合

MacはHomebrew経由でインストールできる

brew install nushell
nu --version

StarShipのLinuxやMacの対応

Linuxの場合

こちらはインストーラーがあるのでそれを使うようだ。

sh -c "$(curl -fsSL https://starship.rs/install.sh)"

linuxbrewを入れてる場合はMacと同様に行けると思う。

Macの場合

brew install starship

Busyboxを追加してよりLinuxっぽくする

BusyboxとはUnixコマンド体系のエミュレーターで、
一つのバイナリファイルでを全部網羅する
Alpine Linuxの中核部分でもある。
そのWindows版にbusybox-w32というのがあるのでそれを使う。

powershell
invoke-webrequest http://frippery.org/files/busybox/busybox64.exe -o busybox64.exe
gsudo powershell
cp .\busybox64.exe 'C:\Program Files\nu\bin\'
exit
busybox64
   BusyBox v1.34.0-FRP-3902-g61e53aa93 (2021-03-02 15:10:05 GMT)

これでbusybox [コマンド]と打てば各種Linuxコマンドが使える

powershell
busybox64 which explorer
busybox64 find -name *.txt
busybox64 wget URL

頭にbusyboxと打つのが嫌な場合はinstallコマンドすると各種エイリアスが作られる
適当なところにインストールしてNuShell上のパスを通しておく
以下ではAppDataのRoaming内にインストールしている

nushell
gsudo nu
cd $nu.env.APPDATA
mkdir Busybox
cd Busybox
busybox64 --install -s .
ls
─────┬───────────────────┬─────────┬──────┬────────────
  #  │       name        │  type   │ size │  modified
─────┼───────────────────┼─────────┼──────┼────────────
   0[.exe             │ Symlink │  0 B │ 2 secs ago
   1[[.exe            │ Symlink │  0 B │ 2 secs ago
   2 │ ar.exe            │ Symlink │  0 B │ 2 secs ago

NuShell側のパスを追加していつでも使えるようにする

nushell
$nu.path | prepend ($nu.env.APPDATA + \Busybox) | prepend "C:\Program Files\nu\bin\" | config set_into path
 ───┬─────────────────┬─────────────────
 # │      path       │     prompt
───┼─────────────────┼─────────────────
 0[table 27 rows] │ starship prompt
───┴─────────────────┴─────────────────

パスが設定されたかは以下のコマンドで確認できる

nushell
$nu.path
────┬───────────────────────────────────────────────────────────────────
  0 │ C:\Program Files\nu\bin\
  1 │ C:\Users\Regolith\AppData\Roaming\Busybox

セットし直したいときは一度削除する

nushell
config remove path

コマンド被りもあるのでいくつか削除するのもあり

rm .\ar.exe
rm .\bash.exe
rm .\less.exe

他のターミナルとの対比表

bashやpowershellとのコマンドの差異を一覧にしている
徐々に慣れていくか。

https://www.nushell.sh/book/coming_from_bash.html

https://www.nushell.sh/book/nushell_map.html

Discussion

ログインするとコメントできます