我怎样才能以 root 身份执行脚本而不指向其位置?

我怎样才能以 root 身份执行脚本而不指向其位置?

我倾向于使用sudo arp-scan --localnet --interface wlan0很多,但我发现每次输入这些内容很麻烦。为了加快速度,我创建了一个名为的脚本arp-lw-scan,它可以帮我完成这项工作。

内容~/Scripts/arp-lw-scan

#!/bin/bash
arp-scan --localnet --interface wlan0

我已将其添加~/Scripts到我的$PATH文件夹中~/.profile,因此只需在终端中输入其名称即可从任何位置执行该文件夹中的每个脚本。

但是,我无法轻松地执行arp-lw-scan,因为它需要 root 访问权限。arp-lw-scan在我的主目录中键入时,会出现没有 root 权限的错误。我可以键入sudo ~/Scripts/arp-lw-scan,这有效,但这仍然需要键入。我希望能够仅键入sudo arp-lw-scan即可执行给定的脚本。

我怎样才能实现这个目标?

答案1

Bash 别名

别名是命令行中的快捷方式。常规 shell Bash 允许您创建自己的别名。

要尝试一下(但不永久保存),请尝试以下操作:

alias myalias='gksudo gparted'
myalias

~/.bash_aliases要永久保存它们,请创建如下文件:

alias myalias='gksudo gparted'
alias edsources='gksudo gedit /etc/apt/sources.list'

~/.bashrcUbuntu 中为用户安装的默认文件将~/.bash_aliases默认源该文件。

别名还允许您附加更多参数并“否决”当前命令。一个常见的用例是

alias rm='rm -i'

要获取您尝试使用 删除的所有内容的确认消息rm

如果您想通过运行原始命令来“转义”别名,请在其前面加上反斜杠。因此,对于该rm示例,只需执行

\rm myfile

删除没有-i别名强制选项的文件。

当前脚本

关于您当前的方法,您应该只需要在单行脚本中在命令前面加上sudo(或gksudo)。

相关内容