Верхний ответ намекает на проблему, но проблема именно в том, что конфигурация по умолчанию в этой версии Debian — это конфигурация vim.tiny. Если вы загрузите конфигурацию vim.basic и будете использовать ее вместо нее, все будет работать как положено.
apt-get install vim
Затем убедитесь, что выбран vim.basic:
update-alternatives --config vi
Мне удалось найти удовлетворительное решение.
Вместо того, чтобы пытаться монтировать напрямую из udev, я создал новую службу, как было предложено в этом вопросе . В конечном итоге я остановился на этом правиле udev:
ACTION=="add",<Your device specifiers here>,ENV{SYSTEMD_WANTS}="log@$env{DEVPATH}.service"
В/etc/systemd/system
:
[Service]
Type=oneshot
TimeoutStartSec=300
GuessMainPID=false
RemainAfterExit=yes
ExecStart=/bin/bash -c "/home/user/mount.sh %I"
И изменил мой скрипт на:
#!/bin/sh
LOGFILE="/home/user/mount.log"
MOUNTDIRECTORY="/media/mount_point"
DEVPATH=$1
BASENAME="$(basename $DEVPATH)"
DEVICE="/dev/$BASENAME"
if [ -z "$BASENAME" ]; then
exit
fi
echo "" >> $LOGFILE
echo "New USB device detected at $DEVICE" >> $LOGFILE
if grep '$MOUNTDIRECTORY ' /proc/mounts; then
# Already mounted
echo "Mount directory already in use" >> $LOGFILE
exit
fi
mount $DEVICE $MOUNTDIRECTORY -o umask=0000,gid=1000,uid=1000 >> $LOGFILE
if [ $? -eq 0 ]; then
echo "$DEVICE mounted at $MOUNTDIRECTORY" >> $LOGFILE
if [ -f $MOUNTDIRECTORY/log.ini ]; then
echo "Log.ini found. Ready to log" >> $LOGFILE
break
elif [ -z "$(ls -A $MOUNTDIRECTORY)" ]; then
echo "USB device empty. Creating log.ini" >> $LOGFILE
touch $MOUNTDIRECTORY/log.ini
break
else
echo "Log.ini not found. Unmounting" >> $LOGFILE
umount $MOUNTDIRECTORY
fi
else
echo "Failed to mount $DEVICE at $MOUNTDIRECTORY" >> $LOGFILE
fi
echo "" >> $LOGFILE
Я до сих пор не понимаю причину моей первоначальной проблемы (файл log.ini, появляющийся в точке монтирования, а не на одном из смонтированных устройств ). Если у кого-то есть объяснение, мне было бы интересно.