Чтобы выполнить определенную команду, мне нужно использовать
sudo -h -u someuser <somecommand>
Чтобы сохранить хоть немного здравомыслия, я создал псевдоним.
alias somecommand='function _dm(){ sudo -u ubuntu somecommand $@; };_dm'
Это прекрасно работает, пока я не попробую сделать что-то необычное.
somecommand arg1 | xargs somecommand arg2
Это вызывает у меня проблемы, так как xargs не вызывает псевдоним. Можно ли как-то заставить это работать?
решение1
Пока ваш псевдоним находится в вашем
.bashrc
, вы сможете сделать...|xargs bash -c somealias ...
Проще всего вместо этого поместить ваш псевдоним в скрипт оболочки. Создайте
~/bin
, добавьте его в свойPATH
, поместите скрипт, и ваша исходная команда будет работать.
Пример скрипта оболочки:
#!/bin/bash
sudo -u ubuntu somecommand "$@"
Редактировать:этот ответпредлагает попробовать №1 bash -ic
вместо bash -c
.