Mam mały plik, który inicjuje tmux
sesję, a następnie tworzy niektóre okna. Po kilku debugowaniach i poprawkach wszystko działało dobrze, dopóki nie zmieniłem nazwy pliku tekstowego (za pomocą tmux
poleceń) z spam
na xset
:
$ source xset
bash: source: /usr/bin/xset: cannot execute binary file
Teraz zmieniłem nazwę pliku i source spam
znów działa, ale zastanawiam się, dlaczego tak jest. Plik znajduje się w moim katalogu domowym, a nie w /usr/bin
.
xset
. Spróbowaćsource ./xset
.Odpowiedzi:
bash
wewnętrzne źródło poleceń, najpierw szuka nazwy pliku w PATH, o ile nie jest ukośnik (/
) w pliku.xset
jest plikiem wykonywalnym w twojej ŚCIEŻCE, stąd problem.Możesz wykonać
source ./xset
lub zmienić opcję sourcepath na:Ze strony podręcznika
bash
:źródło
source
Komenda będzie :To zachowanie jest zdefiniowane (dla
.
, jego aliasu) przez POSIX . Dlaczego? Cóż, możesz umieścić źródłowe skrypty konfiguracyjne w środkuPATH
i uzyskać do nich dostęp bez kwalifikowanej ścieżki. Aby uzyskać dostęp do żądanego pliku, podaj zamiast niego ścieżkę bezwzględną lub względną:Wszystkie powyższe będą działać zgodnie z początkowymi oczekiwaniami. Możesz także wyłączyć za
sourcepath
pomocąshopt
.źródło