Today I started to notice weird behavior running a local command for a binary installed through Go. It seems the command is aliased, but consulting alias, it isn't.
The command buf somehow executes 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 setup
GNU bash, version 5.2.15(1)-release (x86_64-pc-linux-gnu) on Debian GNU/Linux 12 (bookworm).
I use Oh My Bash for fancy stuff with auto-updates enabled. This is my .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 Failing command
The command was installed in GOPATH using the go command:
go install github.com/bufbuild/buf/cmd/[email protected] GOPATH:
go env GOPATH /home/tim/go And the Go bin directory is part of 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 And a sanity check with which resolves to the correct binary:
which buf /home/tim/go/bin/buf Executing the path directly works as expected:
/home/tim/go/bin/buf --help The Buf CLI ... Configured Aliases
There is no configured alias for buf:
alias buf bash: alias: buf: not found Other notes
I've installed Debian just a few months ago. I'm not sure if I ever tried to run buf directly after that. However, my home directory was restored from a backup created from OpenSUSE, on which I'm sure I've run the buf command successfully. Oh My Bash, the Go installation and go binaries were both part of that backup. Most stuff did get updated meanwhile, but I don't remember changing any config.
Other Go binaries work as expected:
cobra-cli --help Cobra is a CLI library for Go that empowers applications. For my daily work buf is also used, but through a MakeFile. When invoked through make it runs just fine.
How can the buf command executed cp when I can't find an alias and the PATH is the correct one? Are there other ways of aliasing commands I'm not aware of?
type -a bufbuf --helpsaysThe Buf CLI A tool for working with Protocol Buffers and managing resources on the Buf Schema Registry (BSR)so there is an issue in your setup most likely.bufmight be a function or something earlier in$PATH.