Cuando compilo egxc por:
GCC x.c -o x
Para ejecutar el resultado tengo que escribir:
./x
Y solo escribiendo:
x
Falla con este mensaje:
x: comando no encontrado
¡Esto significa que Linux no lo busca en el directorio actual! ¿Hay (estoy seguro de que hay) algún problema razonable detrás de este comportamiento?
Respuestas:
Porque de forma predeterminada, el directorio de trabajo actual no está en la
PATH
variable.Esta es una medida de seguridad / conveniencia. Si tiene archivos binarios / scripts llamados
cd
, por ejemplo ,ls
etc. en su directorio de trabajo actual, sería muy molesto si se ejecutaran por defecto.fuente
cd
enbash
, se ejecuta una rutina interna para golpear y no/bin/cd
) a menos que antepones con `.`sl
, tienes el mismo problema. Solo deben estar los directorios de confianza$PATH
y las rutas relativas como nunca.
son un directorio de confianza para un shell interactivo.rm -r target
cuando quise decirrm -f target
que generalmente no hay diferencia. Si escriborm -f target
cuando quise decirrm -r target
, no hay diferencia o la eliminación falla por completo. Por otra parte, creo que cada vez que antes de tipo Irm
, especialmente si estoy añadiendo-f
o-r
o un pegote - es un comando peligroso por su naturaleza. Nadie piensa antes dels
ing.Significa que el directorio actual no está en la variable $ PATH.
fuente
Puede solucionar esto agregando el directorio actual (representado por un solo punto) a la
PATH
variable de entorno.La forma de hacerlo depende del shell que esté utilizando.
si está usando bash, puede agregar la línea
export PATH=$PATH:.
al.bashrc
archivo en su directorio de inicio.si está utilizando csh o tcsh, agregue la línea
set PATH = ($PATH .)
al archivo .cshrc en su directorio de inicio.En mi humilde opinión, para una computadora de escritorio en el hogar esto es algo aceptable para hacer, en cuanto a seguridad.
fuente