Как заставить бойкое приложение искать «схему» по другому пути?

попробуйте findс комбинацией -execdir:

find /app/user/ -type f -name 'service.sh' \
    -execdir./service.sh stop   \; \
    -execdir./service.sh start  \; 

он выполнит ./service.sh start, только если ./service.sh stopбыл успешным.


Вы можете провести тест со сценарием, как показано ниже, скопированным в оба каталога A и B:

script.shэто:

# !/bin/sh

echo 'executing script in directory' "$PWD"
echo $1
echo

дерево каталогов:

.
├── dir_A
│   └── script.sh
└── dir_B
    └── script.sh

запуск команды:

$ find -type f -name 'script.sh' -execdir./script.sh stop \; -execdir./script.sh start \;
executing script in directory /home/αғsнιη/test/dir_A
stop

executing script in directory /home/αғsнιη/test/dir_A
start

executing script in directory /home/αғsнιη/test/dir_B
stop

executing script in directory /home/αғsнιη/test/dir_B
start
1
27.03.2021, 03:42
1 ответ

Существует переменная среды, управляющая тем, где Glib ищет «схемы настроек»:GSETTINGS_SCHEMA_DIR. Итак, выполняем:

export GSETTINGS_SCHEMA_DIR="/opt/myapp/share/glib-2.0/schemas:${GSETTINGS_SCHEMA_DIR}"

(при условии, что там находятся файлы схемы вашего приложения ).

Более "тупой" вариант, но который может решить некоторые другие проблемы, это добавление пути к XDG_DATA_DIRSпеременным окружения; эти пути используются, в частности, как корни для поиска схем. Так:

export XDG_DATA_DIRS="/opt/myapp/share/:${XDG_DATA_DIRS}"

Спасибо @steeldriver за комментарий.

1
28.04.2021, 22:56

Теги

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