Quiero ejecutar un script para simplemente cambiar el directorio de trabajo actual:
#!/bin/bash
cd web/www/project
Pero, después de ejecutarlo, ¡el pwd actual permanece sin cambios! ¿Cómo puedo hacer eso?
bash
scripting
environment-variables
cd-command
Sony Santos
fuente
fuente
return
para escapar de un script generado de esta manera, noexit
, son como funciones de shell yexit
saldrán del shell que originó el script.source ./script
lo mismo?.
ysource
son iguales en bash. 2. no necesitamos usar./
antes del nombre del archivo si está en el mismo directorio. Está bien ejecutar solo esto:. script
Para tareas pequeñas como esta, en lugar de crear un script, cree un alias como este,
Debe agregar esto a su
.bashrc
archivo, si desea que se configure para cada shell interactivo.Ahora puedes ejecutar esto como
$ cdproj
.fuente
eval `./script`
oeval $(./script)
ejecutar esos comandos. Este es un enfoque común para los comandos que necesitan actualizar el entorno del shell de invocación.eval
adoptar el enfoque.Usar
exec bash
al finalSin embargo, esta pregunta a menudo se hace porque uno quiere quedarse en el indicador bash en un determinado directorio después de la ejecución de un script bash desde otro directorio.
Si este es el caso, simplemente ejecute una instancia de bash secundaria al final del script:
Esto crea una nueva subshell. Escriba
exit
para volver al primer shell donde se inició inicialmente el script.fuente
exec
generalmente se considera el último recurso de un sinvergüenza .. :)exit
(o Ctrl + D), tendrá que hacerlo de 11 a 21 veces. (2) Otro inconveniente de usar un script ejecutable es que, si configura alguna opción de shell (p. Ej.,dotglob
Oglobstar
) en su sesión de shell interactivo, las perderá porque está comenzando un nuevo shell.Si bien hay respuestas que realizan la acción exacta que desea, un método más estándar para tal propósito es crear un enlace simbólico:
Entonces podría
cd
al directorio usando el nombreproj
:Este método es más flexible porque puede acceder a los archivos usando el nombre corto sin
cd
:fuente
Si cambia entre directorios muy lejos en el sistema de archivos. Recomendaré autojump .
fuente
Depende de lo que vaya a hacer, otra solución puede ser crear una función en lugar de un script.
Ejemplo:
Cree una función en un archivo, digamos
/home/aidin/my-cd-script
:Luego inclúyalo en su archivo
bashrc
ozshrc
:Ahora puedes usarlo como un comando:
fuente
¿Por qué no usar "exec" que parece hacer exactamente lo que deseo?
fuente
exit
(o Ctrl + D), tendrá que hacerlo de 11 a 21 veces.dotglob
oglobstar
), las perderás porque estás comenzando un nuevo shell. … (Continúa)Puede hacerlo usando una función o usando &&. Los siguientes ejemplos instalan Zabbix y crean un archivo con una línea dentro.
Ex:
o:
fuente