0

我试图在我的 bash_profile 中编写一个命令来替换默认的 emacs 命令,如果文件存在,它将对文件进行 emacs,如果它不存在,则会将模板复制到新文件,然后 emacs。

我尝试的是:

function emacs()
{
if [ ! -f ${1} ]; then \
cp /FILEPATH/template.sh ${1}; fi;
builtin emacs ${1}
}

但我得到的错误是“-bash:builtin:emacs:not a shell builtin”

如果 emacs 不是内置命令,如何创建一个新函数来替换 emacs 命令,然后在该函数中调用原始 emacs 命令?

4

2 回答 2

1

你想要command emacs,没有builtin emacs。见help command

顺便说一句,对新文件模板没有emacs某种内部支持吗?您可能想看看这个:http ://www.emacswiki.org/emacs/TemplatesMode 。(免责声明:我不使用emacs;这只是我在搜索“emacs 新文件模板”时发现的第一页之一。)

于 2013-02-07T15:17:48.023 回答
0

(编辑:对不起,command emacs在另一个答案更好,使用它。)

builtin仅适用于实际的 shell 内置函数,如test, read, ...

请改用 emacs 的显式路径:

function emacs()
{
if [ ! -f ${1} ]; then \
cp /FILEPATH/template.sh ${1}; fi;
/usr/bin/emacs ${1}
}
于 2013-02-07T15:17:09.787 回答