bash: bun: command not foundの解決(Linux環境)
記事の概要
Bunをlinux環境にインストールしてbun
コマンド実行しようと思ったら、bash: bun: command not found
て返ってきて困ったので、それを解決する記事です。
初歩的な内容にはなりますが、linux環境に慣れていない方には参考になるかもしれないのでご共有します。
そもそも|hoge: command not foundの原因
Bunのインストールに限らず、linux環境において何かしらのパッケージをインストール→コマンドを実行した際、下記のようにcommand not found
が返ってくるケースはしばしばあるかと思います。
$ hoge --help
bash: hoge: command not found # `hoge`なんてコマンド知らねえよ?の意
このメッセージが返ってくる原因は、コマンド格納ファイルまでのパスが設定できていないケースが殆どです。
マシン側が実行したいコマンドまでのパス(上記例であればhoge
コマンド)を知らないために、このようなメッセージが返ってくるというわけです。
こういう場合でコマンドを有効化したければ、コマンドが格納されているファイルまでのパスを手動で追加してやる必要があります。
Bunインストール時のパス追加について
Bunパッケージを
$ curl -fsSL https://bun.sh/install | bash
でインストールする際、コマンド格納ファイルまでのパスを自動で通してくれるときとそうじゃない時があることが分かりました。尚、どういう条件でこうなるのかは分かりませんでした。
パスが自動で通っているかどうかはインストール完了後に返ってくるメッセージで判断することができますので、それぞれのケースごとに対応方法をまとめています。メッセージ読むの大事(戒め)
パスが自動で追記されているケース
まずはBunドキュメントにある通り、curlコマンドでインストールを実行します。
$ 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ファイルを確認してみると、
# bun
export BUN_INSTALL="$HOME/.bun"
export PATH=$BUN_INSTALL/bin:$PATH
上記のように追記があることが確認できます。
この場合は自分でPATHを設定する必要はなく、下記のように
$ source ~/.bashrc
を実行して、.bashrcファイルをリロードしてやるだけでbunコマンドが使えるようになります。
パスを手動で通す必要があるケース
curlコマンドでインストールを実行。
$ 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
一般ユーザーでインストール実行後、以下のアドバイスが表示されていたはずです。
この記述をそのまま使えば、自身のユーザー名を確認したりといった作業も不要です。
vi
で記述していっても良いですが、コマンドで追加も可能です。なのでトータル4行のコマンドで済みます。
【補足①】
vi
で編集する場合、存在しないファイルは新規に作ってくれるのでtouch
で作る必要はありません。また、自分のホームディレクトリ内なのでsudo
も不要です。【補足②】
「.bash_profile (or similar)」とあるのは
.profile
.bash_profile
.bashrc
このあたりのファイルのことです。環境によってどのファイルにするべきか変わりますが、既にどれかが存在するならそれに追記で問題ない場合が多いです。【補足③】
↑で
echo
を使い追記するコマンドを書きましたが、-e
オプションをつけた上で$
の前に\
を入れてエスケープしています。そうしないと追記される時点で変換されてしまうので。($HOME
なら/home/your_username
に)このコマンドにおいても
vi
の時と同様、ファイルが無い場合は作成してくれます。あと
>>
は末尾に追記ですが>
は全削除してイチからになるのでミスすると大変です。なのでやはりvi
が良いかもしれません。Linuxで何かをインストールする場合、
この2パターンがありますが、2の場合は自分でパスを通す作業が必要なケースが多いです。しかしたいていコマンド完了後に何すれば良いのか出てるのでお見逃しなく。
(あれってただログ出力してるだけじゃないんだ…)
コメント頂き、ありがとうございます!!
付け焼き刃の知識&慌てながら書いたので、ものすごく遠回りをしていたようですね...w
改めて自分の記事を読み返しましたが、全体的に適切でない手順が多い事に気づけました。
頂いたアドバイスを参考にしつつ、今一度手順を見直して内容を更新したいと思いますb