linux - 在 .profile 中为函数创建别名

标签 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

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

我做错了什么?

最佳答案

如果将 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/

相关文章:

bash - 如何在docker-compose卷中使用bash命令命令?

linux - 使用 shell 脚本搜索和替换文件内容

Android:使用 ADB shell 读取 APN

即使事件发生,Linux 进程仍停留在等待事件上

Linux:iframe被注入(inject)到php文件中,但修改时间戳未被修改

linux - 单声道WCF客户端异常: The requested feature is not implemented

linux - 你如何引用 Bash/Shell 脚本中的错误?

bash - 使用变量在 bash 中编写 for 循环

linux - 我可以在 awk 的不同代码块中使用不同的分隔符吗?

linux - 如何将文件从 windows 复制到 linux(跨平台)?