Meu shell bash me dá um bash : ... : command not found
erro e não sei como começar a resolvê-lo. Além disso, eu não tinha ideia de que tags de bruxa deveriam ser selecionadas, exceto "bash" "Debian".
Sou root, também esses dois programas já estão instalados. O sistema operacional é Debian Buster e recém-instalado. Durante o processo de instalação desmarquei todas as opções na etapa de configuração do Tasksel. Acho que está mais ligado ao meu Shell. Mais tarde, uso para instalar janelas de ladrilhos Awesome.
Aqui está a saída do meu caminho:
root@machine:~# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Aqui estão dois exemplos: Primeiro tentei executar o programa. Em segundo lugar, verifico se o programa está instalado.
root@machine:~# modprobe --verbose
bash: modprobe: command not found
root@adrien:~# apt-get install kmod
Reading package lists...
Done Building dependency tree
Reading state information...
Done kmod is already the newest version (26-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@machine:~# openvpn
bash: openvpn: command not found
root@adrien:~# apt-get install openvpn
Reading package lists... Done Building dependency tree
Reading state information...
Done openvpn is already the newest version (2.4.7-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Responder1
Verifique o seu $PATH
e veja se esses programas estão nele.
$ echo $PATH
deve mostrar qual é o caminho de pesquisa do seu sistema. Compare com o que
$ dpkg-query -L <package_name>
vai te mostrar.
$ command -v program
lhe dirá o caminho completo/absoluto para o programa.
Se você não conseguir encontrar desta forma, tente:
find /sbin modprobe
find /usr/sbin modprobe
Modprobe reside em /sbin
(ou pode estar em /usr/sbin
) e é um link simbólico para /bin/kmod
. Se você não tiver o caminho para o diretório onde está o modprobe, não poderá usá-lo, a menos que forneça o caminho completo, como $ /sbin/modprobe
.
Você pode enviar o resultado $ set | grep PATH
e podemos ver o que há de errado com ele.
Como sua saída PATH
indica que você não tem /sbin
e /usr/sbin
nele, você deve adicioná-lo em seu arquivo $HOME/.bashrc
. Para testar primeiro use:
$ export PATH=$PATH:/sbin:/usr/sbin
e verifique se funciona. Em caso afirmativo, adicione-o $HOME/.bashrc
e, se desejar que esteja disponível para todos os usuários, adicione-o /etc/profile
conforme sugerido por @GAD3R.
PS. $
é prompt de comando, você não coloca no console, mostra que o comando é usado no shell. Em geral, para usuários comuns $
é usado como indicador de prompt do shell e #
para root
. Porque pode ser um problema geral, não só de root, usei $
. Lembre-se que no seu caso quando você está root
$ "torna-se" # mas como já está logado como root isso não mudará nada.
Responder2
Observe que o Debian mudou para outro ramo do su
comando no Debian 10 ("Buster"). Ao contrário das versões anteriores do Debian, ele não adiciona mais automaticamente /sbin
, /usr/sbin
e /usr/local/sbin
automaticamente $PATH
quando você usa plain su
para se tornar root.
Isso surpreendeu algumas pessoas.
Em vez disso , você pode usar su -
para reinicializar explicitamente o ambiente ao alternar para o usuário root: isso fará com que os .../sbin
diretórios sejam incluídos no $PATH
.
Alternativamente, você pode automatizar a adição de diretórios $PATH
sempre que se tornar root,como sugerido na resposta do GAD3R.
Também notei o fato de poder reiniciar meu computador com:
root@máquina:~# reinicializar
em vez de.
root@máquina:~# reinicialização do systemctl
(Observação: a convenção no Stack Exchange é fazer apenas uma pergunta em cada postagem. Várias perguntas como essa tornarão mais difícil para outras pessoas com o mesmo problema encontrar respostas aplicáveis.)
Este é um wrapper de compatibilidade que permite que você ainda use os comandos clássicos de desligamento/reinicialização do estilo SysV, que podem estar profundamente incorporados na memória muscular de muitos administradores Linux/Unix de longo prazo.
Responder3
Você pode verificar a localização do executável: $ which modprobe
e$ which openvpn
Com su
os comandos são
# /usr/sbin/modprobe
# /sbin/openvpn
Com su -
isso se torna
# modprobe
# openvpn
Ou seja, apenas su -
fornecerá privilégios de root completos/PATH do root. O que é necessário para alguns /sbin/
comandos /usr/sbin/
: Debian 10.
Responder4
Edite-o /etc/profile
da seguinte forma (as primeiras 6 linhas):
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
Em seguida, reinicie o seu sistema.