HOWTO · Java

$' ': Java の Command Not Found エラーを修正

このチュートリアルでは、エラー $ : command not found in Java について説明します。

このページの内容

このチュートリアルでは、Java の $'\r': command not found エラーについて説明します。

$'\r': command not found エラーの原因 Java

オペレーティング システムが異なれば、同じ目的でも異なるコマンドが使用されます。 Cygwin などのプラットフォームの Linux プラットフォームで Unix スタイルのコマンドを実行しようとすると、エラー $'\r': command not found が発生します。

\r はキャリッジ リターンに使用されます。これは通常、カーソルが一番左に移動することを意味します。 このエラーの例を次に示します。

Windows で Cygwin Bash を使用して JAVA_HOME パスを永続的に設定してみましょう。 次の bash コマンドと構成を使用します。

.bashrc:

export PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME=$JAVA_HOME:"/cygdrive/C/Program Files/Java/jdk-17.0.2"

.bash_profile:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

上記のコードは、JAVA_HOME パスを永続的に設定しようとする Bash の 2つのファイルです。

Cygwin を使用してこれら 2つのファイルを実行すると、出力は次のようになります。

-bash: $'\377\376if': command not found
-bash: $'then\r': command not found
: No such file or directory
-bash: /cygdrive/c/Users/Sheeraz//.bash_profile: line 3: syntax error near unexpected token `fi'
-bash: /cygdrive/c/Users/Sheeraz//.bash_profile: line 3: `fi'

エラーは、コマンドが機能していないことを示しています。 その理由は、Windows がコマンドの Unix/OSX 形式をサポートしていないことと、Cygwin が Windows で Linux Unix アプリケーションを実行するためのプラットフォームとも見なされているためです。

Java の $'\r': command not found エラーを修正

このエラーの解決策を見てみましょう。

解決策 1

エラー $'\r': command not found が Windows または Cygwin で発生した場合、最良の解決策は dos2unix コマンドを使用することです。

  1. dos2unix は、改行文字または \r 文字を Unix または Cygwin プラットフォームで互換性を持つように変更します。
  2. dos2unix コマンドを使用する前に、このコマンドがファイルを変更するため、ファイルをバックアップする必要があります。 バックアップしていない場合は、変更を元に戻すコマンド unix2dos を使用します。
  3. dos2unix コマンドは macOS X ではサポートされていません。
  4. このコマンドを使用する前に、dos2unix をインストールする必要があります。

解決策 2

dos2unix をインストールしたくない場合は、別の解決策があります。

  1. このエラーの原因となっている \r 文字を削除できます。 次のコマンドを使用して、この末尾の文字を削除します。

    sed -i 's/\r$//' filename
    
  2. filename は、エラーの原因となっているファイルです。

  3. -i オプションはインプレース編集に使用されます。

  4. このコマンドは、入力ファイルから末尾の \r を削除します。

解決策 3

これはもっと単純です。 Notepad++ や VScode などのソフトウェアを使用して、コマンド形式を変更できます。

たとえば、メモ帳 ++ では次のようになります。

  • Notepad++ で Bash ファイルを開きます。
  • 編集 -> EOL 変換に進みます。
  • Unix/OSX 形式を選択します。
  • ファイルを保存して実行します。

これらの 3つのソリューションは、上記のエラーを解決します。