如何在不指向其位置的情况下以root身份执行脚本?

我倾向于使用sudo arp-scan --localnet --interface wlan0 ,但我觉得每次输入sudo arp-scan --localnet --interface wlan0麻烦。 为了加快速度,我创建了一个名为arp-lw-scan的脚本,它应该为我做这个。

~/Scripts/arp-lw-scan

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

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

但是,我很难以简单的方式执行arp-lw-scan ,因为它需要root访问权限。 只是在我的主目录中键入arp-lw-scan会出现关于没有root权限的错误。 我可以输入sudo ~/Scripts/arp-lw-scan ,这样可行,但这仍然很适合输入。 我希望能够只输入sudo arp-lw-scan来执行给定的脚本。

我怎样才能做到这一点?

Bash别名

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

要试用它(不永久保存它们),试试这个:

 alias myalias='gksudo gparted' myalias 

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

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

默认情况下,为Ubuntu中的用户安装的默认~/.bashrc文件将获取~/.bash_aliases文件。

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

 alias rm='rm -i' 

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

如果您想通过运行原始命令来“转义”别名,请在前面添加反斜杠。 因此,使用rm示例,就这样做

 \rm myfile 

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

当前的脚本

关于您当前的方法,您应该能够在sudo (或gksudo )的单行脚本中添加sudo