Можно создать хост munin как a CNAME
для внешнего домена поэтому только имя munin использует динамический хост DNS.
munin.yourdomain.com. CNAME somedynamic.dyndns.org.
Таким образом, поиски на самом деле переходят в somedynamic.dyndns.org
который имеет более низкий динамический TTL, остальную часть yourdomain.com
остается на Вашем DNS.
Проблема в том, что вы используете в скрипте относительные пути: ./ Linux / lib
, ./ foo
. Эти пути указаны относительно текущего каталога. Текущий каталог процесса, запускающего сценарий, является текущим каталогом любого процесса, который его запустил; это не имеет ничего общего с расположением скрипта. Когда вы запускаете сценарий, щелкнув значок на рабочем столе, текущий каталог является вашим домашним каталогом.
Одним из решений является добавление в сценарий команды cd
для перехода в каталог, в котором установлено приложение.
#!/bin/sh
cd /home/xyz/Software/Test/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:./Linux/lib"
exec ./foo --gc=sgen
Но было бы более полезно не изменять текущий каталог, а вместо этого использовать абсолютные пути. Таким образом, вы можете использовать сценарий, например, для открытия файлов в текущем каталоге. Пока я занимаюсь этим, я добавил «$ @»
к вызову foo
, который передает аргументы командной строки скрипта приложению.
#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/xyz/Software/Test/Linux/lib"
exec /home/xyz/Software/Test/foo --gc=sgen "$@"
Если сценарий находится в каталоге приложения, вы можете заставить его определять собственное местоположение. $ 0
- это путь к сценарию. $ {0% / *}
- это путь к сценарию с удаленным всем, что находится после последней косой черты, то есть путь к каталогу, содержащему сценарий.
#!/bin/sh
foo_directory="${0%/*}"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$foo_directory/lib"
exec "$foo_directory/foo" --gc=sgen "$@"
Помните, что если LD_LIBRARY_PATH
изначально пуст, вы добавляете текущий каталог, что может быть не очень хорошей идеей. Вы должны это проверить.
#!/bin/sh
foo_directory="${0%/*}"
if [ -n "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$foo_directory/lib"
else
export LD_LIBRARY_PATH="$foo_directory/lib"
fi
exec "$foo_directory/foo" --gc=sgen "$@"
или (при условии, что вы не используете пустые записи в LD_LIBRARY_PATH
, что является разумным выбором)
#!/bin/sh
foo_directory="${0%/*}"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$foo_directory/lib"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH#:}"
exec "$foo_directory/foo" --gc=sgen "$@"