Linux で実行ファイルを実行するには、実行ファイルの前に必ず「./」と入力する必要があるのはなぜですか?

Linux で実行ファイルを実行するには、実行ファイルの前に必ず「./」と入力する必要があるのはなぜですか?

egxc を次のようにコンパイルすると:

GCC x.c -o x

結果を実行するには次のように記述する必要があります:

./x

そして、次のように入力するだけです:

x

次のメッセージが表示されて失敗します:

x: コマンドが見つかりません

これは、Linux が現在のディレクトリを検索しないことを意味します。この動作の背後には、何か合理的な問題があるのでしょうか (あると確信しています)?

答え1

デフォルトでは、現在の作業ディレクトリは変数に含まれていないためですPATH

これはセキュリティ/利便性のための手段です。現在の作業ディレクトリにcd、、lsなどと呼ばれるバイナリ/スクリプトがある場合、それらがデフォルトで実行されると非常に迷惑になります。

答え2

これは、現在のディレクトリが $PATH 変数に含まれていないことを意味します。

答え3

これを修正するには、現在のディレクトリ (単一のドットで表されます) をPATH環境変数に追加します。
方法は、使用しているシェルによって異なります。bashを使用している場合は、ホーム ディレクトリのファイルに
行を追加します 。csh または tcsh を使用している場合は、ホーム ディレクトリの .cshrc ファイルに 行を追加します 。 私見では、家庭用のデスクトップ コンピューターの場合、セキュリティの観点から、これは許容できる方法です。export PATH=$PATH:..bashrc
set PATH = ($PATH .)

関連情報