开发者

Custom alias fails when used with sudo

alias slt=open -a "Sublime Text开发者_Python百科 2"

Doing slt /regular/file works.

Doing sudo slt /etc/hosts fails.

sudo: slt: command not found

What gives?


Aliases are only known to your local shell. They are substituted during interactive command input, and are not inherited by child shells. So sudo simply won't have it. You should use a shell script instead.


I managed to make root work. Just by modifying /root/.bashrc

alias sublime='/home/kervin/Software/Sublime-Text-2/sublime_text'

You must run it, to verify it.

source .bashrc

On restart the .bashrc runs automatically.

However, only "su -" and becoming root works, whereas using "sudo sublime" does not.

Any other ways to do that?


To get this to work, make an alias to sudo as 'sudo '. Then bash will expand your alias. For example,

$ alias sudo='sudo '
$ alias h='head'
$ h /etc/shadow
head: cannot open '/etc/shadow' for reading: Permission denied
$ sudo h /etc/shadow
root:!:15725:0:99999:7:::
daemon:*:15630:0:99999:7:::
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜