在 .profile 中为函数创建别名

Create Alias for Function in .profile

我想在我的 $GOPATH/bin 目录中 运行 可执行文件,而不必在那里 cd 所以我在我的 .profile 文件中添加了以下内容:

    export GOBIN=$HOME/go-workspace/bin
    function _rungo() { "$GOBIN" "@" }
    alias rungo='_rungo'

别名定义在第 28 行。 这个想法是,在命令行上我输入 运行go executable_name to 运行 an executable.

当我登录我的帐户时,出现以下错误:

     line 31: syntax error: unexpected end of file

如果我注释掉别名定义,我会收到此错误

    line 29: syntax error: unexpected end of file

很明显我的函数定义不正确。

我做错了什么?

函数右括号必须换行。或者,使用 ;.

为了说明问题,看这个例子:

function rungo() { echo X }
}
rungo    # outputs: X }

如果你将一个bash函数声明为一个单行函数,你需要在函数结束之前包含一个;,因此工作函数应该是

function _rungo() { "$GOBIN" "@" ;}

编辑:

回答以下问题:

Thanks Karoly and Zuzzuc. I've decided to keep the function as a one-liner so I added the ; When I issue a command like "rungo hello" I get a message that says /home/smurphy/go-workspace/bin is a directory Is it possible to do what I want to do?

嗯,首先你不需要写 function myFunction() 因为 myFunction() 也可以。

进入正题,不需要别名rungo,只需将函数命名为rungo即可。创建别名只是浪费时间,因为它会将其输入重定向到您创建的函数。

失败的部分原因是别名不能接受参数。我也不确定您是否需要“@$1”中的“@”。

我也认为使用 exec "$GOBIN/" 而不是 "$GOBIN" "@" 会更好。

解决方案

改变

export GOBIN=$HOME/go-workspace/bin
function _rungo() { "$GOBIN" "@" }
alias rungo='_rungo'

export GOBIN=$HOME/go-workspace/bin
function rungo() { exec "$GOBIN/" ;}

希望这对您有所帮助!