如何在bash脚本文件中定义相同名称功能之前检测别名(此文件将在另一个脚本中获取)?
像bash中的元编程一样(如果别名已经使用别名,则定义另一个名称函数?)
$ source t.sh
$ alert 'test'
test
$ type alert
alert is a function
alert ()
{
echo -n "$@"
}
$ alias alert='notify-send --urgency=low -i error'
$ source t.sh
bash: t.sh: line 1: syntax error near unexpected token `('
bash: t.sh: line 1: `alert() { echo "$@"; }'
$ type alert
alert is aliased to `notify-send --urgency=low -i error'
$ cat t.sh
alert() { echo "$@"; }
答案 0 :(得分:2)
你不需要。默认情况下,别名不会在非交互式shell中展开。
答案 1 :(得分:0)
if alias alert 2> /dev/null; then
echo "'alert' already an alias"
else
source t.sh
fi
如果alias
命令的单个参数不是别名,则{{1}}命令以非零状态存在。
答案 2 :(得分:0)
如果which <name>
是别名,name
会返回0。
因此,要检查是否已使用custom_name
,您可以执行以下操作:
if [ $(which custom_name >/dev/null; echo $?) -eq 0 ]
then
echo "Already aliased"
return 1
else
echo "Free to use"
return 0
fi
注意:这不会检查当前shell中是否存在名为custom_name
的bash函数。