Команда exit
не только завершает сценарий, но также устанавливает exit code
, который по соглашению равен нулю для успешного выхода, и какое-то другое целое число для ошибки, поэтому в вашем сценарии ее цель — указать вызывающему (либо другой скрипт/программа, либо пользователю ), что программа завершилась с ошибкой. В bash
и подобных оболочках можно просмотреть или запросить код выхода, проверив переменную оболочки $?
.
Кстати, у вас проблема с отступами. Предложение else
должно быть отсутствующим -вдавленным до того же уровня, что и исходное утверждение if
...
Благодаря комментариям @mosvy я обнаружил, что виновником является xfsettingsd
. В частности, егоxfce_displays_helper_normalize_crtc
функция содержит этот произвольный жестко закодированный -выбор 96 точек на дюйм :
/* The 'physical size' of an X screen is meaningless if that screen
* can consist of many monitors. So just pick a size that make the
* dpi 96.
*
* Firefox and Evince apparently believe what X tells them.
*/
helper->mm_width = (helper->width / 96.0) * 25.4 + 0.5;
helper->mm_height = (helper->height / 96.0) * 25.4 + 0.5;
После того, как я заглушил эту функцию в двоичном файле, заменив ее первый байт инструкцией0xC3
(x86/x86 _64 RET
), мне больше не навязывали 96 DPI.
Тем не менее, это не полностью долгосрочное -решение, поскольку обновление может перезаписать этот файл, поэтому я должен либо удерживать xfce4-settings
пакет (до apt-mark hold xfce4-settings
), либо делать что-то еще, чтобы избежать этого неправильного поведения..