На самом деле они не относятся к службам systemd...
Настройка коврика для мыши зависит от запущенного X и должна быть выполнена для данного сеанса.
Правильный способ настроить это — настроить это как часть конфигурации X.
См. здесь , чтобы узнать, как это настроить.
Что касается подключения к VPN, вам, вероятно, следует настроить это в NetworkManager, который контролирует ваши подключения и знает, когда ваша сеть работает.
См. здесь , чтобы узнать, как подключить сценарий диспетчера к NetworkManager, который может запускать VPN, когда сеть работает.
git push
пишет в stderr, поэтому вам придется перенаправить его на stdout, чтобы его можно было отправить по конвейеру:
cm_safe(){
git push 2>&1 | while IFS= read -r line; do
echo "cm safe push: $line"
done
}
В качестве альтернативы вы можете:
git push |& while IFS= read -r line; do
Я рекомендую прочитать Что такое операторы управления и перенаправления оболочки? для получения дополнительной информации.
Кажется, это сработало, но я не знаю, почему:
git push &> /dev/stdout
Это заставляло git отправлять stdout/stderr на стандартный вывод терминала? Я не понимаю
Как вы уже знаете, git push
выводит stderr, а не stdout. Кроме того, вы всегда должны использовать while IFS= read -r line
для чтения строк ввода с помощью оболочки, если у вас нет особой причины отказаться от IFS=
или -r
. Это похоже на то, что вы всегда цитируете свои переменные оболочки -, это то, что вы удаляете, когда вам нужно, а не что-то, что вы добавляете, когда вам нужно.
FWIW Я бы использовал:
cm_safe() { git push 2>&1 | awk '{print "cm safe push:", $0}'; }
или:
cm_safe() { git push 2>&1 | sed 's/^/cm safe push: /'; }
в любом случае, учитывая, что использование цикла оболочки для обработки текста считается плохой практикой .