OSX zsh - Dlaczego binaria działają tylko z pełną ścieżką? [duplikować]

-2

Piszę tylko małe skrypty C i testuję je. Dlaczego dawka

~ Desktop: gcc test.c -o test ; /Users/xx/Desktop/test ;

działa dobrze

~ Desktop: gcc test.c -o test ; test ;

dawka nie działa? Dlaczego dawka OSX / ZSH potrzebuje pełnej ścieżki do wykonania binarnego?

wowpatrick
źródło
To pytanie jest zadawane bardzo często - proszę o małe badania przed pytaniem. Zobacz też: superuser.com/questions/171909/… , superuser.com/questions/248512/… i superuser.com/questions/541749/…
slhck
Przepraszam moja wina! To było głupie pytanie: Gdybym tylko pomyślał o wywołaniu przez chwilę, mógłbym sobie uświadomić, że wywołanie nie powiedzie się, ponieważ nowy plik wykonywalny nie jest w $ PATH.
wowpatrick

Odpowiedzi:

1

Aby móc uruchamiać pliki wykonywalne z bieżącego katalogu, musisz dodać. do zmiennej środowiskowej PATH. Można to zrobić, uruchamiając PATH=$PATH:. wewnątrz powłoki lub dodawanie export PATH=$PATH:. dla Twojej ~/.zshrc.

Inną alternatywą jest przedrostek poleceń, które chcesz uruchomić ./ twoja komenda

~ Pulpit: gcc test.c -o test; ./test;

Mattias
źródło
3
Włącznie z . w twojej PATH jest ogólnie uważany za bardzo zły pomysł. Może to prowadzić do tego, że komendy zachowują się bardzo różnie w zależności od katalogu, w którym byłeś podczas uruchamiania komendy. Może również prowadzić do błędnego uruchomienia złośliwego kodu znajdującego się w bieżącym katalogu (na przykład katalogu, który właśnie rozpakowałeś z pliku do pobrania). Przyzwyczajenie się do używania wiodącego ./ jest o wiele lepszy sposób.
qqx