"Большая часть минималистического" пути состояла бы в том, чтобы использовать легкий screenlocker как slock или i3lock и иметь профиль для Вашего второго пользователя, который запускает их сессию с другого TTY:
if [ $(tty) = "/dev/tty2" ]; then
exec startx -- vt2 &>/dev/null
logout
fi
Необходимо было бы затем просто заблокировать сессию (связать slock
к keybind или имеют триггер xautolock это после периода неактивности), и переключитесь на TTY2 и запустите сессию для User2.
При первом проходе через цикл while, [1121317]open(to, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, 0)[1121318] с EEXIST произойдет сбой. Затем [1121319]/dev/null[1121320] будет разблокирован, и цикл повторится. Но, как вы указали в своём комментарии, обычные файлы невозможно создать в [1121321]/dev[1121322], поэтому при следующем проходе по циклу [1121323] open(to, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, 0)[1121324] всё равно произойдёт сбой.
Я бы отправил отчёт об ошибке в Apple. Исходный код [1121325]mv[1121326] в основном не изменился по сравнению с версией FreeBSD, но так как у devfs OSX есть такое не-POSIX поведение с обычными файлами, Apple должна исправить их [1121327]mv[1121328].[1120912].
Ммм, потому что вы перезаписываете специальный файл обычным? Чего вы ожидали? dev / null
- это не каталог, это файл, указывающий на устройство null
. Когда вы mv
что-то в нем, вы удаляете оригинал и заменяете его тем, что вы переместили:
$ file /dev/null
/dev/null: character special
$ sudo mv file /dev/null
$ file /dev/null
/dev/null: ASCII text
При перемещении файла в местоположение уже существующего файла существующий файл заменяется. В этом случае файл устройства / dev / null
заменяется, как и любой обычный файл. Чтобы избежать этого, используйте параметр -i
(интерактивный, предупреждает перед перезаписью) или -n
(без клобера) для mv
.
/ dev / null
выполняет только свою специальную функцию как битовое ведро, после чего устройство открывается как есть. Например, когда используется оператор оболочки >
, файл открывается, а затем усекается (не удаляется и не заменяется, что может быть именно тем, что вы ожидали). Как упоминал Кейси, правильный способ удалить файл - использовать rm
или даже unlink
.