【Bun】JavaScriptでシェルスクリプトを書けると噂のBun Shell使ってみた

今回はBunのバージョン1.0.24で追加されたBun Shellを試してみたいと思います。

Bunについては過去の私のブログ記事でも紹介しているのでそちらも一緒にご覧ください。

こちらでも簡単に紹介しますと、Bunとは最新の JavaScript エコシステムに対応するためにゼロから構築された新しい JavaScript ランタイムです。

JavaScriptランタイムということなのでNodeやDenoと同じ枠組みということになります。

そんなBunですが、2024年1月20日にアップデートされJavaScriptでシェルスクリプトを書けるようになりました。

JavaScriptは世界で最も人気のあるスクリプト言語です。

そんなJavaScriptで書けるようになるということは開発者は普段使っている既存のJavaScriptの知識を活用し効率的にシェルスクリプトを書くことができます。

環境情報

OS: MacOS

JavaScript Runtimes: Bun

シェル: Bash

Bunインストール

Bunをインストールしてない人も多いので環境構築から始めます。

公式サイトはこちら。

もしくは

でインストールできます。
BunはNode.jsに変わる新たなJavaScriptランタイムのデファクトスタンダードになることをゴールに掲げているので公式のnpm install手順にて the last npm command you’ll ever need これがあなたの最後のnpmコマンドですとコメントしています。

ちなみに私はasdfでバージョン管理しているので以下のように設定しました。

同じくasdfを使っている方は参考にしてみてください。

実際にBunでシェルスクリプトを書いてみる

では実際にBunでシェルスクリプトを書いてみたいと思います。

bun initコマンドを実行すると、bun プロジェクトの最小のテンプレートが自動生成されます。

ディレクトリとしてはこんな感じです。

package-lockやyarn.lockに当たるのがbun.lockbですねアイコンがトレードマークの肉まんで可愛いです。

今回はBun Shellを試してみたいので、index.tsの中身を全て消し以下のように書いてみました。

こちらの公式ページを読んで単純に”Hello, World!”を表示するシェルスクリプトを書いてみました。

実行してみます。

うまくいきました。

これだけでは味気ないのでaws cliを使用したシェルスクリプトを書いてみたいと思います。

aws s3 l3コマンドを実行したいと思います

AWSアカウントIDが写ってしまったので念の為伏せ字にしましたが、見事コマンド通りS3のバケットリストを表示することができました。

環境変数も使える

ルート直下に.env.localファイルを作成し環境変数を以下のように作ってみました。

先程のシェルスクリプトを以下のように変えて実行してみます。

実行結果

うまくいきました。

実行結果を代入できる

text()メソッドを使うと実行結果を出力せずに文字列として代入できます。

こちらを実行すると同じように

となります。

終わりに

Bun Shellを使ってJavaScriptの記述でシェルスクリプトを書いてみました。

簡単なコードしか試してないですが、JavaScriptは読み書きできる人が多いのでShellでも記述できるようになるというのはかなり恩恵があると思いました。

 

他にも技術ブログをあげているのでそちらもよろしければ見ていってださい。

私のブログ記事一覧

 

株式会社ギークフィードでは開発エンジニアなどの職種で一緒に働く仲間を募集しています。

弊社に興味を持っていただいたり、会社のことをカジュアルに聞いてみたいという場合でも、ご気軽にフォームからお問い合わせください。その場合はコメント欄に、カジュアルにお話したいです、と記載ください!

採用情報はコチラ

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ