Shell script se sale del directorio
Publicado por Kubaru Tacn (4 intervenciones) el 04/01/2008 21:24:25
Buenas... Estaba haciendo un script muy simple con el que pueda, desde la consola, acceder a mis directorios mas visitados (digase, favoritos, bookmarks) por ejemplo:
kubaru@zaphir:~$ d
[h]ome
[d]descargas
[t]mp
Al presionar la tecla 't' deberia suceder esto:
kubaru@zaphir:/tmp$
El problema es el siguiente, si ejecuto el script con la ruta completa, o parado en el mismo directorio donde se encuentra el script funciona barbaro:
kubaru@zaphir:~$ . /usr/bin/d
[h]ome
[d]descargas
[t]mp
t
/tmp
kubaru@zaphir:/tmp$
Pero llamando desde el prompt a 'd', no pasa nada! si incluyo algun echo `pwd` dentro de los if veo que cambia correctamente de directorio, y la variable $? da 0. Pero luego aparezco nuevamente en el directorio que me encontraba antes de llamar al scritp.
Si alguno ya sufrio un tema similar, por favor que avise, alguna variable de entorno algo... encima con otros scripts mas avanzados me pasaba que perdía el directorio de donde lo llamaba y quedaba parado en cualquier lado (donde haya terminado de ejecutarse el script) pero no encuentro diferencias. Estoy corriendo un bash 3.2.25(1)
También probé haciendo un script que llame a este ultimo script, uno que solo haga . /usr/bin/d, para simular estar llamandolo con la ruta completa, o hacer un cd /usr/bin antes del restp del codio... pero nada cambio.
Este es el pequeño codigo:
#!/bin/bash
echo "[h]ome"
echo "[t]mp"
echo "[d]escargas"
echo "t[m]"
read -n1 opcion
if [[ $opcion == "h" ]]; then
cd $HOME
elif [[ $opcion == "t" ]]; then
cd /tmp
elif [[ $opcion == "d" ]]; then
cd $HOME/descargas
elif [[ $opcion == "m" ]]; then
cd $HOME/apps/tm
fi
echo `pwd`
Muchas gracias a todos los que leyeron, y a los que puedan ayudar.
Un abrazo!
kubaru@zaphir:~$ d
[h]ome
[d]descargas
[t]mp
Al presionar la tecla 't' deberia suceder esto:
kubaru@zaphir:/tmp$
El problema es el siguiente, si ejecuto el script con la ruta completa, o parado en el mismo directorio donde se encuentra el script funciona barbaro:
kubaru@zaphir:~$ . /usr/bin/d
[h]ome
[d]descargas
[t]mp
t
/tmp
kubaru@zaphir:/tmp$
Pero llamando desde el prompt a 'd', no pasa nada! si incluyo algun echo `pwd` dentro de los if veo que cambia correctamente de directorio, y la variable $? da 0. Pero luego aparezco nuevamente en el directorio que me encontraba antes de llamar al scritp.
Si alguno ya sufrio un tema similar, por favor que avise, alguna variable de entorno algo... encima con otros scripts mas avanzados me pasaba que perdía el directorio de donde lo llamaba y quedaba parado en cualquier lado (donde haya terminado de ejecutarse el script) pero no encuentro diferencias. Estoy corriendo un bash 3.2.25(1)
También probé haciendo un script que llame a este ultimo script, uno que solo haga . /usr/bin/d, para simular estar llamandolo con la ruta completa, o hacer un cd /usr/bin antes del restp del codio... pero nada cambio.
Este es el pequeño codigo:
#!/bin/bash
echo "[h]ome"
echo "[t]mp"
echo "[d]escargas"
echo "t[m]"
read -n1 opcion
if [[ $opcion == "h" ]]; then
cd $HOME
elif [[ $opcion == "t" ]]; then
cd /tmp
elif [[ $opcion == "d" ]]; then
cd $HOME/descargas
elif [[ $opcion == "m" ]]; then
cd $HOME/apps/tm
fi
echo `pwd`
Muchas gracias a todos los que leyeron, y a los que puedan ayudar.
Un abrazo!
Valora esta pregunta


0