Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: NewBe en 2 Noviembre 2011, 09:55 am



Título: comando export
Publicado por: NewBe en 2 Noviembre 2011, 09:55 am
Hola,

 Como novato, estoy terminando de hacer un ejercicio y sólo me falta el final.
He de hacer un export del programa que he hecho para que se pueda ejecutar sin "./"; yolo hago asi:

export variable="programa"

 Y me dice comando no encontrado.

S.O. Ubuntu 10.04.2 Desktop 64 bits
Shell: Bash


Título: Re: comando export
Publicado por: dakomt en 2 Noviembre 2011, 16:59 pm
supongo que  te falta añadirlo al PATH con otro export

Código:

export MIPROGRAMA = "/home/miusuario/carpetadondeestamiprograma"
export PATH = ${MIPROGRAMA}:${PATH}



Título: Re: comando export
Publicado por: NewBe en 2 Noviembre 2011, 18:17 pm
supongo que  te falta añadirlo al PATH con otro export

Código:

export MIPROGRAMA = "/home/miusuario/carpetadondeestamiprograma"
export PATH = ${MIPROGRAMA}:${PATH}

Hola,

 CCE (Corto, Conciso y Eficaz)  ;-)

Gracias


Título: Re: comando export
Publicado por: bdurruti en 11 Noviembre 2011, 15:09 pm
Esto está completamente de más:

Código:
export MIPROGRAMA = "/home/miusuario/carpetadondeestamiprograma"

aunque debería funcionar, siempre que $MIPROGRAMA se mantenga en memoria. Pero no es lo que se suele hacer.

Lo que debes hacer es, si el fichero ya tiene permisos de ejecución, una cosa de dos: o agregás la ruta de la aplicación a $PATH (como te indicó dakomt), o haces un link soft al fichero dentro de alguna ruta declarada en $PATH, por ejemplo:

Código:
ln -s /home/usuario/scripts/tuscript /usr/bin/

Si optas por lo primero, deberías exportar $PATH con la nueva ruta agregada en tu bashrc, así:

Código:
export PATH=$PATH:/home/uduario/scripts

y luego hacerle un source a tu .bashrc.
Si optas por lo segundo, al estar /usr/bin/ ya declarada en $PATH, no tendrás que hacer nada más.
Saludos.


Título: Re: comando export
Publicado por: dakomt en 11 Noviembre 2011, 16:47 pm
Discrepo contigo bdurruti... para nada creo que este de mas ese codigo...

1. Lo puse para continuar con la solucion que proponia el y por lo tanto le quedara mas claro.

2. Puede ser mania mia o no.. pero personalmente prefiero esto

Código:
export MIPROGRAMA = "/home/miusuario/carpetadondeestamiprograma"
export PATH = ${MIPROGRAMA}:${PATH}

que

Código:
export PATH = "/home/miusuario/carpetadondeestamiprograma":${PATH}

Y creo que si es lo que se suele hacer..... y mas aun si tienes que lidiar con los JAVA_HOME, CUDA_HOME, XXX_HOME... etc..

La opcion del enlace simbolico esta muy bien que la comentes porque nunca esta de mas saber hacer las cosas de mas de una forma... pero si comentas una opcion sobre la que ya se ha hablado.. hazlo para bien xD no para liar mas las cosas o repetir lo mismo....

Saludos



Título: Re: comando export
Publicado por: bdurruti en 11 Noviembre 2011, 18:18 pm
Me parece que la solución más recomendable es hacer un link soft en /usr/bin (o /usr/local/bin), más que agregar la ruta al path. En el caso de que agreguemos '/home/miusuario/carpetadondeestamiprograma' al path (no importa si antes lo exportamos en otra variable o no, y luego PATH=$VARIABLE:$PATH), nos tendríamos que asegurar que en ese directorio haya sólo ejecutables.
Por otro lado, si no entendí mal, lo que dijo NewBe en un principio fue algo así:

Código:
export programa='/home/miusuario/carpeta/miprograma.sh'

lo que luego tendría que haber funcionado sólo exportando la variable y luego ejecutando 'miprograma.sh'. Ahora bien, si no le funcionó es que quizá sólo había almacenado la ruta del directorio en $programa, no la ruta completa hasta el programa.

En resumen, si no me expliqué bien: está perfecto lo que proponés dakomt (de hecho, no había leído bien, creí que en $MIPROGRAMA habías almacenado la ruta hasta el fichero, no hasta el directorio -y no tomé nota que $PATH la habías exportado como PATH=${MIPROGRAMA}:${PATH}), supongo que sólo debí agregar que quizá era mejor hacer el  link soft.

Saludos.