Nohup с переменными оболочки перед командой

Я предполагаю, что у вас есть Cinnamon в качестве пользовательского интерфейса.

Посмотрите~/.config/menus/cinnamon-applications.menu

Ниже приведены сопоставления между категорией меню и пунктами меню.

В~/.local/share/applications

Здесь представлены элементы меню, настроенные в файлах *.desktop.

Имейте в виду, что эти каталоги содержат только созданные вами записи.


Cinnamon имеет аналогичную структуру для общего меню и объединяет его:

В /etc/xdg/menus/cinnamon-applications.menuнаходятся общие категории меню.

В /usr/share/applicationsнаходятся пункты меню всех установленных приложений (без категорий)

0
31.12.2019, 12:58
1 ответ

Установка такой переменной

foo=bar whatever

является частью синтаксиса оболочки. Присваивание должно стоять перед командой.

В вашем случае оболочка не распознает LD_PRELOAD=~/file.soкак присваивание. Это просто аргумент для nohup, а nohupне поддерживает такие установки переменных.

Если вы находитесь в оболочке (и, скорее всего, потому что ~/и &также нуждаются в оболочке ), тогда вы можете поместить переменную в окружение nohup, она будет унаследовано:

foo=bar nohup whatever &

Но это, очевидно, может затронуть nohupсамо себя. Если вы не находитесь в оболочке и/или не хотите, чтобы переменная находилась в окружении nohup, скажите nohupзапустить оболочку, которая будет интерпретировать синтаксис:

nohup sh -c 'foo=bar exec whatever'

Здесь я явно использовал exec, потому что после присваивания нам больше не нужна оболочка. Я полагаю, что некоторые оболочки неявно выполняют самую последнюю команду (, по крайней мере, при некоторых обстоятельствах ), а некоторые — нет.

3
28.01.2020, 02:21

Теги

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