今天我开始注意到,运行通过 Go 安装的二进制文件的本地命令时出现了奇怪的行为。似乎该命令有别名,但咨询后发现alias
并非如此。
该命令buf
以某种方式执行cp
!
buf --help
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Bash 设置
Debian GNU/Linux 12(bookworm)上的 GNU bash,版本 5.2.15(1)-release(x86_64-pc-linux-gnu)。
我使用Oh My Bash进行一些有趣的事情,并启用了自动更新。这是我的.bashrc
:
case $- in
*i*) ;;
*) return;;
esac
export OSH='/home/tim/.oh-my-bash'
OSH_THEME="font"
completions=(
git
ssh
go
docker
docker-compose
makefile
)
aliases=(
general
)
plugins=(
git
bashmarks
)
source "$OSH"/oh-my-bash.sh
export PATH="$PATH:/home/tim/.local/bin"
eval $(thefuck --alias)
export BUN_INSTALL="$HOME/.bun"
export PATH=$BUN_INSTALL/bin:$PATH
命令失败
该命令是GOPATH
使用 go 命令安装的:
go install github.com/bufbuild/buf/cmd/[email protected]
GOPATH
:
go env GOPATH
/home/tim/go
Go bin 目录是其中的一部分PATH
:
echo $PATH
/home/tim/.bun/bin:/home/tim/go/bin:/home/tim/Repositories/goroot/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/tim/.local/bin:/home/tim/.local/bin
并且通过健全性检查which
解析出正确的二进制文件:
which buf
/home/tim/go/bin/buf
直接执行路径即可按预期工作:
/home/tim/go/bin/buf --help
The Buf CLI
...
配置别名
没有为 配置别名buf
:
alias buf
bash: alias: buf: not found
其他说明
我几个月前才安装了 Debian。我不确定我是否曾尝试buf
在那之后直接运行。但是,我的主目录是从 OpenSUSE 创建的备份中恢复的,我确定我已经buf
成功运行了该命令。我的天啊,Go 安装和 go 二进制文件都是该备份的一部分。在此期间,大多数东西都得到了更新,但我不记得更改过任何配置。
其他 Go 二进制文件按预期工作:
cobra-cli --help
Cobra is a CLI library for Go that empowers applications.
我日常工作buf
也用到它,但是是通过 MakeFile 实现的。通过 MakeFile 调用时,make
它运行得很好。
当我找不到别名并且别名是正确的时,该如何buf
执行命令?还有其他我不知道的命令别名方法吗?cp
PATH