如何在不指向其位置的情况下以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
。