В моем случае я установил virtualbox-guest-x11
на основной блок, поэтому я перепутал драйверы x11. Итак, я получал это сообщение об ошибке$HOME/.xsession-errors
:
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
syndaemon: no process found
/etc/mdm/Xsession: Beginning session setup...
localuser:raskolnikov being added to access control list
Я удалил пакет и заново -установил cinnamon
.
aptitude remove virtualbox-guest-x11 -y
aptitude install cinnamon -y
Перезагрузил бокс и все заработало.
Встроенная команда read
разделяет слова, используя значение IFS
, которое по умолчанию содержит пробел, табуляцию и новую строку. Следовательно, при использовании read
для ввода вкладка удаляется.
Начните функцию с:
IFS_SAVE="$IFS"
IFS=' '
Теперь только пробелы будут разделять слова. По окончании функции восстановить IFS до исходного значения:
IFS="$IFS_SAVE"
Обратите внимание, что вы можете использовать литеральную табуляцию, если она экранирована обратной косой чертой. Кроме того, я бы не стал использовать grep
для соответствия вкладке, по возможности используйте встроенные функции, так как это быстрее. Моя версия функции будет:
function make_cmd()
{
SAVE_IFS="$IFS"
IFS=' '
read target colon sources
for src in $sources; do
if [ $src -nt $target ]; then
while read cmd; do
case "$cmd" in
$'\t'*) echo "executing $cmd"
eval ${cmd# }
;;
*) ;;
esac
done
break;
fi
done
IFS="$SAVE_IFS"
}
$'\t'
заменяет буквальную вкладку (благодаря Кусалананде за подсказку ).
Вставьте символ табуляции после #
в подстановку переменных. Однако использование printf
может быть более читабельным.