我想为killprocessatport
创建一个全局别名,所以我最后放在/etc/bash.bashrc
fuserfunction() {
fuser -KILL -k -n tcp $1
}
alias killprocessatport=fuserfunction
然后我在最后放入/etc/profile
source /etc/bash.bashrc
然后我用bash /etc/profile
加载它,期望带有参数的别名可以工作,但它没有:
$ killprocessatport 80
killprocessatport: command not found
为什么不呢?
答案 0 :(得分:3)
它不起作用,因为当你这样做:
bash /etc/profile
打开一个新shell,执行配置文件脚本,然后返回当前的shell。
实际上,这就是为什么要在/etc/bash.bashrc
中加载source /etc/bash.bashrc
/etc/profile
的内容。
因此,要将其加载到当前shell中,您应该运行:
source /etc/profile
代替。
Nota Bene :
~/.bashrc
中添加自己的别名,这些别名会在加载时通过bash自动获取; /etc/profile.d
,它将自动在新的shell实例上获取; killprocessatport
添加fuserfunction
的别名。alias killhttpserver=fuserfunction 80
。但是,您可能更喜欢使用以下参数来调用函数的别名:fuserfunction
fuserkillproc
使用显式名称也是一个好主意,例如{{1}},或者甚至可以提出更好的... HTH
答案 1 :(得分:1)
在这种情况下,您无法使用别名或功能。在PATH上的位置创建可执行脚本(如果您的/etc/suoders
修改了根路径,则由sudo配置)。
#!/bin/sh
exec fuser -KILL -k -n tcp "$@"
保存脚本,然后使用chmod +x
设置其权限。