Hoje comecei a notar um comportamento estranho ao executar um comando local para um binário instalado através do Go. Parece que o comando tem um alias, mas consultoria alias
não é.
O comando buf
de alguma forma é executado 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.
Configuração do Bash
GNU bash, versão 5.2.15(1)-release (x86_64-pc-linux-gnu) no Debian GNU/Linux 12 (bookworm).
Eu uso Oh My Bash para coisas sofisticadas com atualizações automáticas habilitadas. Este é meu .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
Comando falhado
O comando foi instalado GOPATH
usando o comando go:
go install github.com/bufbuild/buf/cmd/[email protected]
GOPATH
:
go env GOPATH
/home/tim/go
E o diretório Go bin faz parte de 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
E uma verificação de integridade which
resolve o binário correto:
which buf
/home/tim/go/bin/buf
A execução direta do caminho funciona conforme o esperado:
/home/tim/go/bin/buf --help
The Buf CLI
...
Aliases configurados
Não há nenhum alias configurado para buf
:
alias buf
bash: alias: buf: not found
Outras notas
Instalei o Debian há apenas alguns meses. Não tenho certeza se já tentei correr buf
logo depois disso. No entanto, meu diretório inicial foi restaurado a partir de um backup criado no OpenSUSE, no qual tenho certeza de que executei o buf
comando com sucesso. Oh My Bash, a instalação do Go e os binários go faziam parte desse backup. A maioria das coisas foi atualizada entretanto, mas não me lembro de alterar nenhuma configuração.
Outros binários Go funcionam conforme esperado:
cobra-cli --help
Cobra is a CLI library for Go that empowers applications.
Para o meu trabalho diário buf
também é utilizado, mas através de um MakeFile. Quando invocado, make
ele funciona perfeitamente.
Como o buf
comando pode ser executado cp
quando não consigo encontrar um alias e PATH
é o correto? Existem outras maneiras de criar alias de comandos que não conheço?
Conforme observado nos comentários, use
type buf
para perguntar ao shell o que ele pensabuf
que é. Nesse caso, espero que você descubra que é de fato uma função sugerida nos comentários - em particular, esta função de oh-my-bash :