Chcę wiedzieć, czy mogę używać różnych rozszerzeń plików wykonywalnych systemu Linux zamiast używać rozszerzenia „.sh” lub „.o”.
Chcę wiedzieć, czy mogę używać różnych rozszerzeń plików wykonywalnych systemu Linux zamiast używać rozszerzenia „.sh” lub „.o”.
Odpowiedzi:
Tak, możesz użyć wszystkiego, co chcesz.
Rozszerzenia nie mają znaczenia w systemach * nix. W przypadku plików binarnych (takich jak skompilowany program w języku C) program sam się uruchomi. W przypadku wykonywalnych kafelków tekstowych liczy się linia shebang u góry:
#!/bin/bash
To mówi powłoce, aby na przykład zinterpretowała plik za pomocą Bash.
Oczywiście rozszerzenia są nadal istotne dla sesji graficznych.
which bash. ropucha: / home / hennes> ls -l ./bash -rwx ------ 1 użytkowników hennes 745832 21 października 14:07 ./bash ropucha: / home / hennes> mv bash bash.some_extension ropucha: / home / hennes> ./ bash.some </pre> Szczęśliwie uruchamia plik bash mimo zmiany nazwy
W przeciwieństwie do Windows, Linux (i inne systemy uniksopodobne) używa Magic Numbers do rozróżniania różnych typów plików, w związku z czym nie dba o rozszerzenie pliku.
Magiczna liczba (czasami złożyć podpis ) to wzór, który jest porównywany z bazą danych w celu wypracowania typ pliku.
Możesz użyć filepolecenia, aby określić typ pliku:
$ file /usr/bin/bash
/usr/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x2af417cdc1684a2ab609fcab847dfee8cc643713, stripped
lub:
$ file /etc/init.d/network
/etc/init.d/network: Bourne-Again shell script, ASCII text executable
Jeśli zmienisz nazwę pliku i zmienisz jego rozszerzenie, nie wyłapie go:
$ cp /etc/init.d/network ~/network.jpg
$ file ~/network.jpg
/home/gareth/network.jpg: Bourne-Again shell script, ASCII text executable
$ mv ~/network.jpg ~/network.exe
$ file ~/network.exe
/home/gareth/network.exe: Bourne-Again shell script, ASCII text executable
Tak, każde rozszerzenie lub żadne nie będzie działać, pod warunkiem, że jest to plik tekstowy i oznaczony jako plik wykonywalny.
Jeśli użyjesz #!plus wymaganego interpretera jako pierwszego wiersza, zastąpi to domyślny interpreter skryptów.
.o.).