Closed ryo-manba closed 3 years ago
--- r1 2021-09-25 15:38:23.000000000 +0900
+++ r2 2021-09-25 15:35:15.000000000 +0900
@@ -2444,56 +2444,56 @@
# minishell: exit status = 126
# bash : exit status = 126
---------------------------------
-[OK] case: export PATH=""; nosuchfile
+[KO] case: export PATH=""; nosuchfile
---------------------------------
# minishell: stdout
# bash : stdout
# minishell: stderr
-/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
+/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: command not found
# bash : stderr
/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
# minishell: exit status = 127
# bash : exit status = 127
---------------------------------
-[OK] case: export PATH=''; nosuchfile
+[KO] case: export PATH=''; nosuchfile
---------------------------------
# minishell: stdout
# bash : stdout
# minishell: stderr
-/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
+/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: command not found
# bash : stderr
/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
# minishell: exit status = 127
# bash : exit status = 127
---------------------------------
-[OK] case: unset PATH; nosuchfile
+[KO] case: unset PATH; nosuchfile
---------------------------------
# minishell: stdout
# bash : stdout
# minishell: stderr
-/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
+/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: command not found
# bash : stderr
/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
# minishell: exit status = 127
# bash : exit status = 127
---------------------------------
-[OK] case: unset PATH; export PATH; nosuchfile
+[KO] case: unset PATH; export PATH; nosuchfile
---------------------------------
# minishell: stdout
# bash : stdout
# minishell: stderr
-/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
+/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: command not found
# bash : stderr
/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
# minishell: exit status = 127
# bash : exit status = 127
---------------------------------
-[OK] case: unset PATH; export PATH=; nosuchfile
+[KO] case: unset PATH; export PATH=; nosuchfile
---------------------------------
# minishell: stdout
# bash : stdout
# minishell: stderr
-/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
+/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: command not found
# bash : stderr
/Users/corvvs/reps/42cursus/minishell/mainflow/minishell: nosuchfile: No such file or directory
# minishell: exit status = 127
5ケースKOが増えてます。
関数exec_create_split_path
に到達する場合、実行対象はコマンドであると判定されている。
しかしPATH
がない場合にカレントディレクトリを見るなら、実行対象はコマンドではないことになる。
このズレがその後のコードでフォローされていないことが原因。
exec_create_split_path
がint*
を取るようにした。実行対象がコマンド扱いでなくなる場合、このint*
の値を1にセットする。exec_create_path
内でexec_check_path_stat
を呼ぶ時、第2引数is_command
を1に決め打ちしていたが、これを上記のフラグを使って適切にセットするようにした。exec_get_path
は、特定の条件を満たした場合にエラーを強制的に"command not found"にしていたが、これをやめた。すみませんありがとうございます!
現象
あるべき状態
PATHの状態が以下のどれかならカレントディレクトリを試す。
.
の場合:
の場合4, 5は行えているので残り3パターンに対応する。