O motivo pelo qual /bin/open tem precedência sobre /usr/bin/open em seu sistema é presumivelmente que /bin vem antes de /usr/bin em seu PATH. Para examinar seu PATH, você pode executar echo $PATH . Os elementos são separados por dois pontos.
Você recebeu o comando que queria quando usou (suponho) sudo para executar open ou para iniciar um shell raiz no qual o executou, porque sudo usa seu próprio PATH, definido em /etc/sudoers como secure_path , que no meu sistema é
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Como você pode ver, /usr/bin vem antes de /bin .
Acho que sua descoberta é estranha, porque, até onde eu sei, /usr/bin geralmente vem antes de /bin . Seus usuários podem não ter o mesmo problema que você.
No entanto, para ser seguro, você pode ter seu programa instalado em /usr/local/bin , que sempre deve vir antes de /usr/bin e /bin no PATH de um usuário para que o software criado localmente tenha precedência sobre outros comandos com o mesmo nome.
Ainda mais seguro, como steeldriver sugerido , faça com que seus usuários (ou seu script de instalação) definam um alias para sua ferramenta em um arquivo de configuração do shell como ~/.bashrc . Os aliases sempre têm precedência sobre outros comandos. Ao colocar um alias no seu ~/.bashrc , você garante que ele só será conhecido pelos shells interativos e não interferirá em outros programas.
Excluir o link simbólico pode causar problemas se os programas tentarem executar /bin/open esperando openvt e podem não ser confiáveis, como apontado por steeldriver, porque o link simbólico pode ser recriado quando o pacote que o fornece é atualizado ou reinstalado ( ou seja, bastante imprevisível).