Quiero ejecutar un script para simplemente cambiar el directorio de trabajo actual:
#!/bin/bash
cd web/www/projectPero, 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

returnpara escapar de un script generado de esta manera, noexit, son como funciones de shell yexitsaldrán del shell que originó el script.source ./scriptlo mismo?.ysourceson iguales en bash. 2. no necesitamos usar./antes del nombre del archivo si está en el mismo directorio. Está bien ejecutar solo esto:. scriptPara tareas pequeñas como esta, en lugar de crear un script, cree un alias como este,
Debe agregar esto a su
.bashrcarchivo, 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.evaladoptar el enfoque.Usar
exec bashal 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
exitpara volver al primer shell donde se inició inicialmente el script.fuente
execgeneralmente 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.,dotglobOglobstar) 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
cdal 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
bashrcozshrc: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.dotgloboglobstar), 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