Debian - comando “command” não encontrado

Debian - comando “command” não encontrado

Meu shell bash me dá um bash : ... : command not founderro 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 $PATHe 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 PATHe podemos ver o que há de errado com ele.

Como sua saída PATHindica que você não tem /sbine /usr/sbinnele, 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/.bashrce, se desejar que esteja disponível para todos os usuários, adicione-o /etc/profileconforme 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 sucomando no Debian 10 ("Buster"). Ao contrário das versões anteriores do Debian, ele não adiciona mais automaticamente /sbin, /usr/sbine /usr/local/sbinautomaticamente $PATHquando você usa plain supara 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 .../sbindiretórios sejam incluídos no $PATH.

Alternativamente, você pode automatizar a adição de diretórios $PATHsempre 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 modprobee$ which openvpn

Com suos 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/profileda 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.

informação relacionada