xrdb
использует препроцессор C (, потому что он, конечно же, использует ), поэтому он поддерживает условия. Вот фрагмент из моего.Xresources
:
#if SCREEN_NUM == 0
Xft.dpi: 157
#endif
#if SCREEN_NUM == 1
Xft.dpi: 96
Xft.antialias: 0
#endif
Теперь xrdb -merge
будет правильно работать на каждом мониторе, и когда вы войдете в систему, предполагая, что один из множества сценариев инициализации X потрудится посмотреть на ваш .Xresources
, он также будет установлен правильно.
(Обратите внимание, :на странице Конфигурация шрифтов Arch Linux есть больше примеров, но в интересах сохранения их для потомков я включил соответствующий пример выше.)
Не используйте function
, т.е. строки 2 -4 будут:
sudo_stuffs() {
install_ss
}
Затем, чтобы вызвать его, просто используйте:
sudo_stuffs
Наконец, чтобы получить разрешение root, когда пользователь не root, добавьте эти 3 строки в начало вашего скрипта (после строки 1 ). Это запустит скрипт через sudo
, который проверит, что у пользователя есть разрешение на запуск sudo
и (обычно )запросит пароль:
if [ `id -u` -gt 0 ]; then
exec sudo "$0" "$@"
fi
Я нашел дубликат, но по правилам StackExchange не могу его установить.
Поэтому я публикую это здесь:
https://askubuntu.com/questions/57915/environment-variables-when-run-with-sudo
Настоящая причина отсутствия команды заключается в том, что команда sudo
отбросила мои переменные среды, которые экспортировались из моей оболочки, поэтому подоболочка, сгенерированная sudo, не сможет узнать, что такое функция install_ss
.
Ваша строка sudo bash -c "$FUNC; sudo _stuffs" мне кажется неправильной. За sudo -c должна следовать команда, которую вы хотите выполнить в кавычках, завершите свои кавычки, а затем поместите имя пользователя, для которого вы хотите выполнить команду, как в конце.
sudo -c "bash FUNC sudo_stuffs" MY_USERNAME
позвольте, я не уверен, что вы можете вызвать функцию таким образом. Я обычно вызываю свою функцию в сценарии, и если вы хотите, чтобы команды, составляющие вашу функцию, выполнялись от имени определенного пользователя, вы должны добавить suco -c "command" мое _имя пользователя к функции.