GNU/Linux >> Tutoriales Linux >  >> Linux

¿Desde dónde se ejecuta un script de Shell?

Tengo un script de shell en /usr/bin . Llamémoslo hello .

Contiene esto:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Ejecutando hello desde /home/Documents Espero el siguiente resultado:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

¿Cómo puedo obtener la ruta del directorio desde donde se ejecuta el script?

Respuesta aceptada:

No puedo comentar sobre otra respuesta, así que estoy publicando aquí. Como se dijo, dirname solo lee $0 y toma el nombre del directorio, por lo que si llamó a algo como ../../directory/something.sh no resuelve esos puntos, solo devuelve ../../directory . En lugar de usar la expansión de subshell con cd y pwd , puede usar un comando muy inteligente readlink que en realidad resuelve no solo los directorios punteados sino también todos los enlaces simbólicos. Por lo tanto, sugiero

  echo "I am located at $(readlink -e -- "$0")"

Puede usar otro dirname alrededor de esto para obtener el directorio en lugar del archivo.


Linux
  1. ¿Cómo se ejecuta un script al iniciar sesión en * nix?

  2. ¿Cómo ejecutar un script de shell cuando cambia un archivo o directorio?

  3. Ejecutar script de shell en paralelo

  4. Shell script directorio actual?

  5. Ejecute un script canalizado desde stdin (Linux/Shell Scripting)

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

Cómo ejecutar un script de shell al inicio

Ejecute un script de shell en la nueva terminal desde la terminal actual

Ejecute un script de shell desde el comando docker-compose, dentro del contenedor