🐰

bash: bun: command not foundの解決(Linux環境)

2023/09/14に公開
2

記事の概要

Bunをlinux環境にインストールしてbunコマンド実行しようと思ったら、bash: bun: command not foundて返ってきて困ったので、それを解決する記事です。

初歩的な内容にはなりますが、linux環境に慣れていない方には参考になるかもしれないのでご共有します。

そもそも|hoge: command not foundの原因

Bunのインストールに限らず、linux環境において何かしらのパッケージをインストール→コマンドを実行した際、下記のようにcommand not foundが返ってくるケースはしばしばあるかと思います。

command not foundの例
$ hoge --help
bash: hoge: command not found # `hoge`なんてコマンド知らねえよ?の意

このメッセージが返ってくる原因は、コマンド格納ファイルまでのパスが設定できていないケースが殆どです。

マシン側が実行したいコマンドまでのパス(上記例であればhogeコマンド)を知らないために、このようなメッセージが返ってくるというわけです。
こういう場合でコマンドを有効化したければ、コマンドが格納されているファイルまでのパスを手動で追加してやる必要があります。

Bunインストール時のパス追加について

Bunパッケージを

$ curl -fsSL https://bun.sh/install | bash 

でインストールする際、コマンド格納ファイルまでのパスを自動で通してくれるときとそうじゃない時があることが分かりました。尚、どういう条件でこうなるのかは分かりませんでした。
パスが自動で通っているかどうかはインストール完了後に返ってくるメッセージで判断することができますので、それぞれのケースごとに対応方法をまとめています。メッセージ読むの大事(戒め)

パスが自動で追記されているケース

まずはBunドキュメントにある通り、curlコマンドでインストールを実行します。

terminal
$ curl -fsSL https://bun.sh/install | bash # インストール実行

~省略(100%と表示されるはず)~
bun was installed successfully to ~/.bun/bin/bun # ホームディレクトリにBunがインストールされた旨

Added "~/.bun/bin" to $PATH in "~/.bashrc" # .bashrcにパス追加しといたよーの旨。

To get started, run: 

  source /home/username/.bashrc 
  bun --help 

インストール完了後、上記メッセージが返ってきました。Added~の行にある通り、.bashrcにPATHを追記したよとのこと。実際.bashrcファイルを確認してみると、

.bashrc
# bun
export BUN_INSTALL="$HOME/.bun"
export PATH=$BUN_INSTALL/bin:$PATH

上記のように追記があることが確認できます。
この場合は自分でPATHを設定する必要はなく、下記のように

$ source ~/.bashrc

を実行して、.bashrcファイルをリロードしてやるだけでbunコマンドが使えるようになります。

パスを手動で通す必要があるケース

curlコマンドでインストールを実行。

terminal
$ curl -fsSL https://bun.sh/install | bash # インストール実行

~省略(100%と表示されるはず)~
bun was installed successfully to ~/.bun/bin/bun # ホームディレクトリにBunがインストールされた旨

Manually add the directory to ~/.bash_profile (or similar):
  export BUN_INSTALL="$HOME/.bun"
  export PATH=$BUN_INSTALL/bin:$PATH   # この記述にある通り、手動でパスを通せと言っている

To get started, run: 

  source /home/username/.bashrc 
  bun --help 

パスが自動で追加されているケースと異なり、
Manually add the directory to ~というメッセージが返ってきます。
パス追加に必要な記述もここに示されているので、これを.bash_profileに追加してあげるだけでOKです。以下はパス追加の手順です。

$ echo -e export BUN_INSTALL="\$HOME/.bun" >> ~/.bash_profile
$ echo -e export PATH=\$BUN_INSTALL/bin:\$PATH >> ~/.bash_profile
$ source ~/.bash_profile

上記コマンドを実行し、.bash_profileにパスを追記します(※Discussionで頂いたコマンドを踏襲しています)

Discussion

jwnrjwnr

一般ユーザーでインストール実行後、以下のアドバイスが表示されていたはずです。

bun was installed successfully to ~/.bun/bin/bun      # ホームディレクトリにBun入ったよ

Manually add the directory to ~/.bash_profile (or similar):
  export BUN_INSTALL="$HOME/.bun"
  export PATH=$BUN_INSTALL/bin:$PATH                  # この記述でパス通るよ

この記述をそのまま使えば、自身のユーザー名を確認したりといった作業も不要です。
viで記述していっても良いですが、コマンドで追加も可能です。

$ echo -e export BUN_INSTALL="\$HOME/.bun" >> ~/.bash_profile
$ echo -e export PATH=\$BUN_INSTALL/bin:\$PATH >> ~/.bash_profile
$ source ~/.bash_profile

なのでトータル4行のコマンドで済みます。

【補足①】
viで編集する場合、存在しないファイルは新規に作ってくれるのでtouchで作る必要はありません。また、自分のホームディレクトリ内なのでsudoも不要です。

【補足②】
「.bash_profile (or similar)」とあるのは .profile .bash_profile .bashrc このあたりのファイルのことです。環境によってどのファイルにするべきか変わりますが、既にどれかが存在するならそれに追記で問題ない場合が多いです。

【補足③】
↑でechoを使い追記するコマンドを書きましたが、-eオプションをつけた上で$の前に\を入れてエスケープしています。そうしないと追記される時点で変換されてしまうので。($HOMEなら/home/your_usernameに)
このコマンドにおいてもviの時と同様、ファイルが無い場合は作成してくれます。
あと>>は末尾に追記ですが >は全削除してイチからになるのでミスすると大変です。なのでやはりviが良いかもしれません。


Linuxで何かをインストールする場合、

  1. スーパーユーザーでシステム全体にガッツリと
  2. 一般ユーザーで自分のディレクトリ内にひっそりと

この2パターンがありますが、2の場合は自分でパスを通す作業が必要なケースが多いです。しかしたいていコマンド完了後に何すれば良いのか出てるのでお見逃しなく。
(あれってただログ出力してるだけじゃないんだ…)

とれはろとれはろ

コメント頂き、ありがとうございます!!

付け焼き刃の知識&慌てながら書いたので、ものすごく遠回りをしていたようですね...w
改めて自分の記事を読み返しましたが、全体的に適切でない手順が多い事に気づけました。
頂いたアドバイスを参考にしつつ、今一度手順を見直して内容を更新したいと思いますb