*.desktop nor symlink works (only for this one file) - Linux Mint 17.2 Cinnamon

Можно создать хост munin как a CNAME для внешнего домена поэтому только имя munin использует динамический хост DNS.

munin.yourdomain.com. CNAME somedynamic.dyndns.org.

Таким образом, поиски на самом деле переходят в somedynamic.dyndns.org который имеет более низкий динамический TTL, остальную часть yourdomain.com остается на Вашем DNS.

2
18.10.2015, 00:36
1 ответ

Проблема в том, что вы используете в скрипте относительные пути: ./ 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 "$@"
3
27.01.2020, 22:05

Теги

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