ನಾನು ಈ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೇನೆ
#!/bin/bash
cd /ftp/slake/FiveM/cfx-server
[ -d cache ] || mkdir cache
exec FXServer $SERVER_ARGS $*
ಆದರೆ ಅದು FXServer ಮಾಡುವುದಿಲ್ಲ ಎಂದು ಹೇಳುತ್ತದೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ
ನಾನು ಲಿನಕ್ಸ್ಗೆ ಹೊಸಬನಾಗಿದ್ದೇನೆ ಆದ್ದರಿಂದ ಇದು ಸಾಕಷ್ಟು ಮೂಕ ವಿಫಲವಾಗಬಹುದು
Когда вы запускаете исполняемый файл по имени, например FXServer
, ваша оболочка просматривает все каталоги в переменной $PATH
и пытается найти исполняемый файл с таким именем. в одном из них. Затем он выполнит первый найденный. Поскольку /ftp/slake/FiveM/cfx-server
не находится в вашем $PATH
, это сработает только в том случае, если у вас есть текущий каталог (.
) в вашем $PATH
и похоже, что нет. Простое решение состоит в том, чтобы просто использовать полный путь к исполняемому файлу, а не просто вызывать его по имени:
#!/bin/bash
cd /ftp/slake/FiveM/cfx-server
[ -d cache ] || mkdir cache
./FXServer $SERVER_ARGS $*
./
означает «текущий каталог», поэтому будет выполняться файл с именем FXServer
, который находится в текущем каталоге. Я удалил exec
, так как он не нужен и делает что-то очень специфическое.
Лучшей версией, предполагающей, что эту команду нужно запустить на /ftp/slake/FiveM/cfx-server
, было бы добавить тест и выйти, если по какой-то причине мы не можем изменить в нужный каталог (например, если он не существует). Кроме того, вы должны всегда указывать свои переменные, и вы почти наверняка хотите $@
, а не $*
:
#!/bin/bash
if cd /ftp/slake/FiveM/cfx-server; then
[ -d cache ] || mkdir cache
./FXServer "$SERVER_ARGS" "$@"
else
echo "Failed to change directory to /ftp/slake/FiveM/cfx-server" >&2
exit 1
fi