我想在我的 $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
很明显我的函数定义不正确。
我做错了什么?
最佳答案
如果将 bash 函数声明为单行函数,则需要在函数结束之前包含一个 ;
,因此工作函数应该是
function _rungo() { "$GOBIN" "@$1" ;}
编辑:
回答以下问题:
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/$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" ;}
希望这对您有所帮助!
关于linux - 在 .profile 中为函数创建别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251323/