У меня были такие вещи, как раньше. Я честно не уверен, что это просто проблема с тем, как хранятся команды или проблема с какой-либо ограниченной средой, с которой эти команды запускаются.
В любом случае есть два варианта, которые оба работали для меня :
Напишите небольшой скрипт bash. Это может быть ваша команда с строкой #!/bin/bash наверху (я ее сломал, чтобы читать лучше):#!/bin/bash
DEV=$(xinput list | grep 'Razer' | grep -o \=[0-9]* | grep -o [0-9]*$)
/usr/bin/xinput set-button-map $DEV 3 2 1 4 5 6 7 8 1 10 11 12 13
Затем просто сохраните это где-то вроде ~/.mousescript и вызовите bash ~/.mousescript в качестве вашего запуска команда. Или просто заверните свою команду в bash: bash -c "/usr/bin/xinput set-button-map `xinput list | grep 'Razer' | grep -o \=[0-9]* | grep -o [0-9]*$` 3 2 1 4 5 6 7 8 1 10 11 12 13"
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH
также соответствующим Принципу наименьшего удивления .
Предположим, вы запустили программу под названием foo
, но убедитесь, что вам действительно нужно запустить ее как root
. Итак, вы запустите sudo foo
. Было бы плохо, если программа, выполняемая с помощью sudo foo
, отличается от программы, выполняемой foo
, что произойдет, если в root
PATH
есть другой foo
. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo
делает то же самое, что и то, что вы ставите после него, кроме как root
.
Вот что произойдет, если sudo
добавлено root
PATH
к вашему PATH
. Но предположим, что sudo
добавил путь root
к вашему PATH
. Если это было поведение sudo
, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar
) при моделировании исходной root
логической оболочки (sudo -i
), вы также можете запустить ее с sudo bar
. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root
) пути может быть другой bar
.
Вместо поведения sudo
, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH
изменился. Если вы добавите /sbin
, /usr/sbin
и /usr/local/sbin
к вашему PATH
, проблема будет решена. Если вы не хотите sbin
в вашем PATH при запуске программ как root
. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)
/etc/sudoers
/etc/profile
/etc/bash.bashrc
. Я также убедился, что для пользователя или пользователя root нет файлов пользователя .profile
и .bashrc
. Я не вижу логической причины для того, чтобы это изменилось, и я начинаю сомневаться в своей памяти.
– couling
8 June 2012 в 03:08
/sbin/
и /usr/sbin
в мой собственный путь (я чувствую) - правильный способ исправить это.
– couling
8 June 2012 в 03:13
Вы заглянули в страницу руководства для sudo? В разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ говорится о том, как sudo использует переменную PATH.
Вы также хотите посмотреть man-страницу для sudo как PATH можно изменить там с помощью secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.
Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы все равно должны использовать команду , измененную там , для создания и редактирования файлов в /etc/sudoers.d/.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
Вы просмотрели man-страницу для sudo
? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo
использует переменную PATH
.
Вы также хотите посмотреть /etc/sudoers
как PATH
может быть изменен там с secure_path
. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/
.
Предлагается внести изменения в конфигурацию sudo
, создав файлы в /etc/sudoers.d/
, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers
, которые могут возникнуть при обновлении sudo
до новой версии. Вы должны использовать команду visudo
для создания и редактирования файлов в /etc/sudoers.d/
.
secure_path
для решения проблемы.
– couling
7 June 2012 в 23:37