使用 sudo 运行命令的别名

使用 sudo 运行命令的别名

我总是以 root 身份运行特定的应用程序,因为它需要更多权限。我通常只是 sudo 。我想创建一个类似于以下内容的别名: alias myCmd='sudo nohup /path/to/binary > /dev/null 2>&1 &'

当 sudo 提示输入密码但实际上什么也不会发生时,就会出现问题。如何做呢?

答案1

使用 shell 脚本而不是别名。

在~/.bashrc中:

export PATH="$PATH":~/bin

你的脚本在 ~/bin/runthat 中:

#!/bin/bash
sudo nohup /path/to/binary > /dev/null 2>&1 &

然后运行它,只需这样做:

$ runthat

或者,如果您跳过了 PATH 步骤,则按以下方式运行:

$ ~/bin/runthat

如果这是系统范围(所有用户)的脚本而不仅仅是您的脚本,则将其放入 /usr/local/bin 中。

或者你也可以使用一个函数。例如。在~/.bashrc中:

runthat() {
    sudo nohup /path/to/binary > /dev/null 2>&1 &
}

另外仅供参考,不是问题的直接答案,另一种选择是将其放入 sudoers 文件中:

sudo visudo
    (your editor pops up here)
    username ALL=NOPASSWD: /path/to/binary

现在它根本不会要求输入密码。 (这意味着安全性较低......也许某些安全漏洞现在也会让恶意软件运行此应用程序......所以请确保您接受这个小风险)

答案2

将其添加到 ~/.bashrc 的底部

alias sudo="sudo " # space after sudo

相关内容