Mi shell bash me da un bash : ... : command not found
error y no sé cómo empezar a solucionarlo. Además, no tenía idea de que se debían seleccionar etiquetas excepto "bash" "Debian".
Soy root, además esos dos programas ya están instalados. El sistema operativo es Debian Buster y está recién instalado. Durante el proceso de instalación, desmarqué todas las opciones en el paso de configuración de Tasksel. Creo que está más vinculado a mi Shell. Más tarde, utilizo para instalar ventanas en mosaico Awesome.
Aquí el resultado de mi camino:
root@machine:~# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Aquí dos ejemplos: Primero intenté ejecutar el programa. En segundo lugar, compruebo si el 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.
Respuesta1
Revise su $PATH
y vea si estos programas están en él.
$ echo $PATH
debería mostrar cuál es la ruta de búsqueda de su sistema. compararlo con lo que
$ dpkg-query -L <package_name>
te mostrará.
$ command -v program
le indicará la ruta completa/absoluta al programa.
Si no puede encontrarlo de esta manera, intente:
find /sbin modprobe
find /usr/sbin modprobe
Modprobe reside /sbin
(o podría estar en /usr/sbin
) y es un enlace simbólico a /bin/kmod
. Si no tiene la ruta al directorio donde se encuentra modprobe, no podrá usarlo a menos que proporcione una ruta completa como $ /sbin/modprobe
.
Puede enviar el resultado $ set | grep PATH
y podremos ver qué tiene de malo.
Como su resultado PATH
indica que no tiene /sbin
y /usr/sbin
en él, debe agregarlo en su archivo $HOME/.bashrc
. Para probarlo por primera vez:
$ export PATH=$PATH:/sbin:/usr/sbin
y comprobar si funciona. Si es así, agréguelo $HOME/.bashrc
y si desea que esté disponible para todos los usuarios, agréguelo /etc/profile
como lo sugirió @GAD3R.
PD. $
es el símbolo del sistema, no lo coloca en la consola, muestra que el comando se usa en el shell. En general, para el usuario normal $
se utiliza como indicador del símbolo del shell y #
para root
. Debido a que puede ser un problema general, no solo de root, utilicé $
. Tenga en cuenta que en su caso, cuando sea root
$ "se convierte en" # pero como ya inició sesión como root, no cambiará nada.
Respuesta2
Tenga en cuenta que Debian cambió a otra rama del su
comando en Debian 10 ("Buster"). A diferencia de versiones anteriores de Debian, ya no agrega automáticamente archivos /sbin
, /usr/sbin
y /usr/local/sbin
automáticamente $PATH
cuando usas simple su
para convertirte en root.
Esto ha sorprendido a bastantes personas.
En su lugar, puede utilizar su -
para reinicializar explícitamente por completo el entorno al cambiar al usuario raíz: esto hará que los .../sbin
directorios se incluyan en $PATH
.
Alternativamente, puede automatizar la adición de directorios cada $PATH
vez que se convierta en root,como se sugiere en la respuesta de GAD3R.
También noté el hecho de que puedo reiniciar mi computadora con:
root@máquina:~# reiniciar
en lugar de.
root@máquina:~# systemctl reiniciar
(Nota: la convención en Stack Exchange es hacer solo una pregunta en cada publicación de preguntas. Preguntas múltiples como esta harán que a otras personas con el mismo problema les resulte más difícil encontrar respuestas aplicables).
Este es un contenedor de compatibilidad que le permite seguir usando los comandos de apagado/reinicio del estilo clásico SysV, que pueden estar profundamente arraigados en la memoria muscular de muchos administradores de Linux/Unix a largo plazo.
Respuesta3
Puede verificar la ubicación del ejecutable: $ which modprobe
y$ which openvpn
Con su
los comandos son
# /usr/sbin/modprobe
# /sbin/openvpn
Con su -
ello se convierte
# modprobe
# openvpn
Es decir, solo su -
proporcionará privilegios completos de root/RUTA del root. Que se requiere para algunos /sbin/
comandos /usr/sbin/
: Debian 10.
Respuesta4
Edite su /etc/profile
de la siguiente manera (las primeras 6 líneas):
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
Luego reinicie su sistema.