Вопрос или проблема
Я не совсем понимаю, что такое консоль команд выполнения, и я не понимаю два момента.
- Существует известный способ перезапуска gnome-shell: Alt+F2, а затем “r”. Что такое это “r”? Просто внутренний командный проект в консоли выполнения? Тогда сколько внутренних команд у консоли выполнения?
- Я могу запускать свои собственные скрипты через консоль выполнения. Однако мне нужно указать полный путь, только тогда скрипт будет работать. Если я использую сокращение ~/my-path/script, скрипт открывается в редакторе как команда Display в Nautilus. Я не понимаю почему.
Да, ‘r’ — это одна из внутренних команд в диалоге выполнения. Они задокументированы на https://wiki.gnome.org/Projects/GnomeShell/CheatSheet#Developer_tools.
- ‘r’ или ‘restart’: перезапуск оболочки
- ‘rt’: перезагрузка темы оболочки (очень полезно при написании/модификации темы)
- ‘lg’: открытие Looking Glass, что эквивалентно DevTools в вашем браузере
- ‘debugexit’: завершение gnome-shell с кодом ошибки; вероятно, полезно только если вы работаете над разработкой самой оболочки
Для второй части нам нужно посмотреть, что именно делает функция _run()
в https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/runDialog.js.
Сначала она обрабатывает внутренние команды, перечисленные выше.
Затем она анализирует ввод с помощью GLib.shell_parse_argv()
, которая просто разбивает его на слова, как /bin/sh
и не выполняет никакого расширения. Затем она пытается выполнить результат с помощью GLib.spawn_async()
. Это будет искать программу в $PATH
, и именно поэтому что-то вроде “firefox” работает как вы ожидаете.
Если это не удается, она берет весь ваш ввод, расширяет ‘~’ до вашей домашней директории и пытается открыть его как файл.
Ответ или решение
Команда «выполнить» или консоль запуска, которая активируется сочетанием клавиш Alt+F2 в окружении рабочего стола GNOME, представляет собой функциональность, позволяющую пользователю быстро исполнять команды или запускать приложения без необходимости открывать терминал. Это окно ввода предоставляет упрощённый способ взаимодействия с системой через текстовые команды, и особенно полезно для выполнения часто используемых задач, таких как перезагрузка оболочки GNOME или запуск приложений без необходимости навигации по меню.
Теоретическое обоснование
Весьма известная команда для перезапуска GNOME Shell — Alt+F2 и введение «r». Это специфическая внутренняя команда, которая перезагружает оболочку GNOME без завершения сеанса пользователя. Это функция особенно полезна при разработке или изменении тем или расширений, так как позволяет применять изменения без перезагрузки всей системы. GNOME предлагает определённое количество таких «внутренних» команд. Список основных команд можно найти на официальном сайте GNOME.
Некоторые из этих команд включают:
- r («restart»): перезапуск графической оболочки GNOME.
- rt: перезагрузка темы оболочки, полезная для разработчиков тем.
- lg: запуск инструмента Looking Glass, который является эквивалентом инструментов разработчика в браузерах.
- debugexit: завершение работы GNOME Shell с кодом ошибки, что может быть полезно при разработке.
Практические примеры
При использовании команды Alt+F2 и ввода «r», GNOME Shell мгновенно перезапускается, сохраняются все открытые приложения и их состояние, что полезно для устранения неполадок.
Когда пользователь вводит «lg» через этот интерфейс, открывается Looking Glass, предоставляющий доступ к инструментам отладки системы, позволяющим разработчикам просматривать ошибки JavaScript, инспектировать элементы интерфейса и выполнять собственные сценарии.
Применение и ограничения
Однако, при использовании Alt+F2 для запуска пользовательских скриптов, возникают некоторые особенности. Например, ввод пути к скрипту в формате ~/my-path/script приводит к его открытию в текстовом редакторе, а не к выполнению. Это поведение обусловлено тем, как GNOME обрабатывает вводимые команды.
Код обработчика запуска команд в файле runDialog.js объясняет это поведение. Когда команда вводится через консоль запуска, она разрезается на части с помощью функции GLib.shell_parse_argv()
, которая интерпретирует строку как список аргументов для выполнения. Если первая часть не распознаётся как команда в системе, либо путь к выполняемому файлу, её предполагают "путем к файлу" после расширения символа ‘~’ до соответствующего каталога.
Это объясняет, почему команда должна быть введена с полным путём (например, /home/user/my-path/script): GNOME пытается выполнить файл напрямую, и только если это невозможно, открывает его для просмотра. Таким образом, для успешного выполнения скриптов через Alt+F2 пользователю необходимо указывать абсолютный путь или убедиться, что его скрипты включены в переменные среды PATH.
Этот встроенный механизм позволяет пользователям эффективно работать в системе, хотя он и обладает определёнными ограничениями. К примеру, он не поддерживает выполнение сложных баш-скриптов или командных цепочек, что подразумевает использование стандартного терминала для задач, требующих массивных входных данных или подробной обработки ошибок. Функциональность запуска консоли в GNOME проектировалась как деталь, ориентированная на скорость и эффективность для часто выполняемых простых задач и разработческих процессов в системе GNOME.