ಫೈಲ್ ಡೂನ್ಸ್ಟ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ಬ್ಯಾಷ್ ಹೇಳುತ್ತಿದ್ದಾರೆ

ನಾನು ಈ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೇನೆ

#!/bin/bash

cd /ftp/slake/FiveM/cfx-server
[ -d cache ] || mkdir cache

exec FXServer $SERVER_ARGS $*

ಆದರೆ ಅದು FXServer ಮಾಡುವುದಿಲ್ಲ ಎಂದು ಹೇಳುತ್ತದೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ

img_FXServer

ನಾನು ಲಿನಕ್ಸ್‌ಗೆ ಹೊಸಬನಾಗಿದ್ದೇನೆ ಆದ್ದರಿಂದ ಇದು ಸಾಕಷ್ಟು ಮೂಕ ವಿಫಲವಾಗಬಹುದು

0
задан 22 November 2020 в 19:17

1 ответ

Когда вы запускаете исполняемый файл по имени, например 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
2
ответ дан 22 November 2020 в 16:40

Другие вопросы по тегам:

Похожие вопросы: