scripts script resueltos paso pasar parametros hacer espaƱol ejercicios ejemplos ejecutar como comandos bash

bash - paso - scripts linux ejercicios resueltos



Determine la ruta de ejecuciĆ³n del script BASH (5)

Contribuido por Stephane CHAZELAS en cus Asumiendo shell POSIX:

prg=$0 if [ ! -e "$prg" ]; then case $prg in (*/*) exit 1;; (*) prg=$(command -v -- "$prg") || exit;; esac fi dir=$( cd -P -- "$(dirname -- "$prg")" && pwd -P ) || exit prg=$dir/$(basename -- "$prg") || exit printf ''%s/n'' "$prg"

Posible duplicado:
¿Puede un script Bash decir en qué directorio está almacenado?

En un script de comandos de Windows, uno puede determinar la ruta del directorio del script que se está ejecutando actualmente usando %~dp0 . Por ejemplo:

@echo Running from %~dp0

¿Cuál sería el equivalente en un script de BASH ?


El código de Vlad está sobrecomprimido. Debiera ser:

MY_PATH=`dirname "$0"` MY_PATH=`( cd "$MY_PATH" && pwd )`


Para la ruta relativa (es decir, el equivalente directo de Windows '' %~dp0 ):

MY_PATH="`dirname /"$0/"`" echo "$MY_PATH"

Para la ruta absoluta y normalizada:

MY_PATH="`dirname /"$0/"`" # relative MY_PATH="`( cd /"$MY_PATH/" && pwd )`" # absolutized and normalized if [ -z "$MY_PATH" ] ; then # error; for some reason, the path is not accessible # to the script (e.g. permissions re-evaled after suid) exit 1 # fail fi echo "$MY_PATH"


Suponiendo que escriba la ruta completa al script bash, use $0 y dirname , por ejemplo:

#!/bin/bash echo "$0" dirname "$0"

Ejemplo de salida:

$ /a/b/c/myScript.bash /a/b/c/myScript.bash /a/b/c

Si es necesario, agregue los resultados de la variable $PWD a una ruta relativa.

EDITAR: Se agregaron comillas para manejar caracteres espaciales.


echo Running from `dirname $0`