三十路プログラマーぶろぐ

プログラマー、英語初級、三十路

shはコマンドがなくてもPermission deniedというエラーを吐く

shは、そもそもコマンドがない場合にも、エラーメッセージとしてPermission deniedを出力する。これにハマった。bashの場合はコマンドがなければcommand not foundというメッセージを出力する。

普段はshを使っている人は少ない気がするのでハマらないかもしれないが、OSSなど他者が作ったソフトウェア内でshが使われている場合がある。"sh: 1: hoge: Permission denied"みたいなメッセージが出たら、権限ももちろんだが、hogeに相当するコマンドがそもそもあるか確認したほうがよい。

自分の場合はNuxtというフレームワークを触るのにnpmというコマンドを使っている時にハマった。普段JavaScriptとは無縁なため、npmでプロジェクトのディレクトリを作ったあと、npm installをするという基本的なことを忘れていた、というか知らんかった。

チュートリアルにしたがってnpm run devを実行しても、Permission deniedが出るので、見当がつかずstraceまで動員して、ようやくコマンド自体が無いことに気がついた。