在.profile中为函数创建别名

时间:2016-10-25 23:25:51

标签: linux bash shell .profile

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

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

别名定义在第28行。 我的想法是在命令行上输入 rungo executable_name 来运行可执行文件。

当我登录我的帐户时,收到以下错误:

     line 31: syntax error: unexpected end of file

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

    line 29: syntax error: unexpected end of file

显然我的函数定义不正确。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

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

编辑:

回答以下问题:

  

感谢Karoly和Zuzzuc。我决定将这个功能保持为单行,所以我添加了;当我发出像" rungo你好"我收到一条消息,说/ home / smurphy / go-workspace / bin是一个目录我可以做我想做的事吗?

好吧,首先你不需要写function myFunction(),因为myFunction()同样适用。

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

部分失败的原因,是因为别名可以接受参数。我也不确定你是否需要" @" in" @ $ 1"。

我也认为最好使用exec "$GOBIN/$1"而不只是"$GOBIN" "@$1"

<强>解决方案

更改

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

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

希望这有帮助!

答案 1 :(得分:0)

功能关闭括号必须在新行中。或者,使用;

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

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