comando export

Iniciado por NewBe, 2 Noviembre 2011, 09:55 AM

0 Miembros y 1 Visitante están viendo este tema.

NewBe

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

dakomt

supongo que  te falta añadirlo al PATH con otro export



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


NewBe

Cita de: dakomt en  2 Noviembre 2011, 16:59 PM
supongo que  te falta añadirlo al PATH con otro export



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


Hola,

CCE (Corto, Conciso y Eficaz)  ;-)

Gracias

bdurruti

Esto está completamente de más:

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:

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í:

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.
Buenaventura Durruti
Open your source, open your mind.

dakomt

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


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


que


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


bdurruti

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í:

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.
Buenaventura Durruti
Open your source, open your mind.