¿Por qué tengo que escribir "./" siempre antes de un ejecutable para ejecutarlo en Linux?

¿Por qué tengo que escribir "./" siempre antes de un ejecutable para ejecutarlo en Linux?

Cuando compilo egxc por:

GCC x.c -o x

Para ejecutar el resultado tengo que escribir:

./x

Y simplemente 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?

Respuesta1

Porque de forma predeterminada, el directorio de trabajo actual no está en la PATHvariable.

Esta es una medida de seguridad/conveniencia. Si tiene archivos binarios/scripts llamados, por ejemplo cd, ls, , etc. en su directorio de trabajo actual, sería muy molesto si se ejecutaran de forma predeterminada.

Respuesta2

Significa que el directorio actual no está en la variable $PATH.

Respuesta3

Puede solucionar este problema agregando el directorio actual (representado por un solo punto) a la PATHvariable de entorno.
La forma de hacerlo depende del shell que estés utilizando.
Si está utilizando bash, puede agregar la línea export PATH=$PATH:.al .bashrcarchivo 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 doméstica, esto es algo aceptable en términos de seguridad.

información relacionada