Предполагая, что вы используете X.org, это кажется невозможным. X-сервер поддерживает параметр , называемый -novtswitch
, но он применяется только при выходе из X-сервера, а не при его запуске.Учитывая обсуждение в ошибке Fedora № 246267 , кажется, что этот параметр также применялся при запуске, но он был удален, потому что он приводил к сбою X-сервера на большом количестве оборудования: X-серверу требуется доступ к видео аппаратное при его запуске.
Следующим лучшим вариантом было бы дать короткое мерцание другому vt и переключиться обратно. В Linux вы можете использовать openvt
, чтобы запустить команду в новом виртуальном терминале, и chvt
, чтобы вернуться назад.
Создайте сценарий ~ / .xinitrc.chvt
, содержащий
#!/bin/sh
echo "New X session running on vt$X_FGCONSOLE" >"$ORIGINAL_TTY"
chvt "$ORIGINAL_FGCONSOLE"
exec ~/.xinitrc
, и запустите
ORIGINAL_FGCONSOLE=$(fgconsole) ORIGINAL_TTY=$(tty) openvt -s -- sh -c 'export X_FGCONSOLE=$(fgconsole); startx ~/.xinitrc.chvt -- vt$X_FGCONSOLE'
(отдельный сценарий ~ / .xinitrc.chvt
вместо sh -c…
необходим, потому что startx
испортил аргументы, содержащие подстановочные знаки, и вам нужно передать абсолютный путь из-за другой причуды startx. В качестве альтернативы, вызовите xinit
напрямую и установите вверх XAUTHORITY
самостоятельно.)
В зависимости от того, где вы запускаете этот скрипт, у вас может не быть разрешения на запуск fgconsole
(«Не удалось получить дескриптор файла ссылаясь на консоль »), потому что он должен иметь возможность открывать / dev / console
, а он не может этого сделать, если им владеет другой пользователь (на практике root). Я не знаю, как узнать, как в противном случае вернуться к исходной консоли.Одним из решений, если у вас есть root-доступ, было бы заменить ORIGINAL_FGCONSOLE = $ (fgconsole)…
на
ORIGINAL_FGCONSOLE=$(sudo fgconsole)
и дать вашей учетной записи разрешение на запуск fgconsole
как root, запустив visudo
и добавив строку
zzy ALL = (root) NOPASSWD: /bin/fgconsole
после любой другой строки, относящейся к вашей учетной записи. Безопасно исключить ошибку в программе fgconsole
.
¹ Если вы используете Linux, вы используете X.org, а если вы не используете Linux, есть еще хорошее изменение в том, что вы используете X.org.
Я пришел сюда, потому что у меня был тот же вопрос. В конце концов я понял, что для моей цели в любое время, когда я могу использовать что-то вроде «шаг -из» цикла, я могу просто установить другую точку останова после цикла, а затем позволить программе continue
завершить цикл и запустить точку останова. потом. Извините, если это очевидно для большинства людей, но, вероятно, это полезно для тех, кто ищет ответ на этот вопрос.
Использовать команду «Готово»; иногда это делает то же самое, что и «выйти -наружу». Это завершит то, что делает стек (функция, обычно ), и перейдет к следующей строке после этого. Найдите команду для получения дополнительной информации.