Альтернативный подход к деталям вашего вопроса о том, чего вы действительно пытаетесь достичь: меньше печатать.
Вы также можете обнаружить, что хорошие псевдонимы позволяют использовать лучшее из обоих миров, то есть длинные имена папок. Мне нравятся длинные имена папок, и мне также нравятся короткие имена для набора текста, и я добиваюсь этого с помощью таких псевдонимов, как:
alias zab='cd ~/mycar/activerecord-boolean-converter'
alias q='cd ~/Dropbox/95_2014/work/code/ruby__rails/ruby/ruby_quiz'
alias dummy='cd ~/zipcar/zipcar-rails-core/spec/dummy'
Затем я просто набираю, например, q , затем нажимаю return
Думаю, в этом случае вам нужно использовать gksudo
. Я цитирую из gksudo(1)
man page:
gksu - фронтенд to su и gksudo - фронтенд to sudo. Их при- mary предназначена для выполнения графических команд, которым нужен корень без необходимо запустить эмулятор терминала X и использовать su напрямую
Так что, похоже, проблема здесь в том, что команды, запускаемые комбинацией клавиш, не имеют (псевдо) терминального устройства, что приводит к сбою sudo
и вместо них следует использовать gksudo
.
Gnome 3 использует механизм авторизации, называемый polkit, поэтому правильный способ запуска этого исполняемого файла от имени root - через pkexec:
pkexec позволяет авторизованному пользователю выполнять ПРОГРАММУ от имени другого пользователя. Если имя пользователя не указано, то программа будет выполняться как административный суперпользователь, root.
Для того, чтобы авторизовать пользователя в активном сеансе на выполнение этой команды от имени root, вы должны определить новое действие (согласно приведенной выше спецификации) через XML
файл под /usr/share/polkit-1/action
, назовем его org.fedora.pkexec.kbback.policy
.
Содержание /usr/share/polkit-1/actions/org.fedora.pkexec.kbback.kbback. policy
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<icon_name>input-keyboard</icon_name>
<action id="org.fedora.pkexec.kbback">
<message>Authentication is required to Change Keyboard Backlight</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/backlight</annotate>
</action>
</policyconfig>
Следующим шагом является назначение команд клавиатурным сокращениям через настройки клавиатуры GNOME:
pkexec /usr/local/bin/backlight inc
pkexec /usr/local/bin/backlight dec
(примечание: я использовал /usr/local/bin/backlight
в качестве пути к моему исполняемому файлу, вам нужно будет изменить файл действия и две команды, если путь к исполняемому файлу отличается)