Stworzyłem prosty program C taki jak:
int main(int argc, char *argv[]) {
if (argc != 5) {
fputs("Not enough arguments!\n", stderr);
exit(EXIT_FAILURE);
}
I mam zmienioną PATH w etc / bash.bashrc w następujący sposób:
PATH=.:$PATH
Zapisałem ten program jako set.c i kompiluję go
gcc -o set set.c
w folderze
~/Programming/so
Jednak kiedy dzwonię
set 2 3
nic się nie dzieje. Brak wyświetlanego tekstu.
Powołanie
./set 2 3
daje oczekiwany wynik
Nigdy wcześniej nie miałem problemu z PATH
which set
zwraca ./set. Wygląda więc na to, że ŚCIEŻKA jest poprawna. Co się dzieje
testz tego samego powodu; testjest również wbudowany w powłokę.
testwydają się mieć sens. Oczywiście, zanim go włożysz PATH, naprawdę powinieneś wymyślić inne imię. I dopóki nie włożysz programu do swojego programu, PATHbędziesz musiał go w ./testkażdym razie wywołać . Dlatego używanie nazwy testprogramu jest w porządku, o ile jest to szybki test, który zamierzasz usunąć przed końcem dnia.
foo.
lsnazwiesz, to za każdym razem, gdy zobaczysz, czy istnieje, uruchomi się (ale tylko jeśli zmienisz ścieżkę, tak jak w pytaniu).