Saltar al contenido

Script para cambiar el directorio actual (cd, pwd)

Solución:

Es un comportamiento esperado. El script se ejecuta en un subshell y no puede cambiar el directorio de trabajo del shell principal. Sus efectos se pierden cuando termina.

Para cambiar el directorio del shell actual de forma permanente, debe usar el source comando, también alias simplemente como ., que ejecuta un script en el entorno de shell actual en lugar de un sub shell.

Los siguientes comandos son idénticos:

. script

o

source script

Para pequeñas tareas como esta, en lugar de crear un script, cree un alias como este,

$ alias cdproj='cd /dir/web/www/proj'

Deberías agregar esto a tu .bashrc archivo, si lo desea configurar para cada shell interactivo.

Ahora puedes ejecutar esto como $ cdproj.

Usar exec bash al final

Un script bash opera en su entorno actual o en el de sus hijos, pero nunca en su entorno padre.

Sin embargo, esta pregunta a menudo se hace porque uno quiere quedar en el indicador de bash en un directorio determinado después de la ejecución de un script bash de otro directorio.

Si este es el caso, simplemente ejecute una instancia secundaria de bash al final del script:

#!/usr/bin/env bash
cd desired/directory
exec bash

Esto crea una nueva subcapa. Escribe control+D o exit para volver al primer shell donde se inició inicialmente el script.

Actualizar

Al menos con las versiones más nuevas de bash, los exec en la última línea ya no es necesario. Además, se puede hacer que el script funcione con cualquier shell preferido usando el $SHELL Variable ambiental. Esto entonces da:

#!/usr/bin/env bash
cd desired/directory
$SHELL
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *