Como se explica en las otras respuestas, ha cambiado el directorio, pero solo dentro del subconjunto que ejecuta el script . Esto no afecta el shell padre.
Una solución es usar funciones bash en lugar de un script bash ( sh
); colocando su código de script bash en una función. Eso hace que la función esté disponible como un comando y luego, esto se ejecutará sin un proceso secundario y, por lo tanto, cualquier cd
comando afectará al shell de la persona que llama.
Funciones bash:
Una característica del perfil bash es almacenar funciones personalizadas que pueden ejecutarse en el terminal o en scripts bash de la misma manera que ejecuta aplicaciones / comandos, esto también podría usarse como un acceso directo para comandos largos.
Para hacer que su sistema sea eficiente en gran medida, deberá copiar su función al final de varios archivos
/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile
Puedes sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile
editar / crear esos archivos rápidamente
Cómo :
Copie su código de script bash dentro de una nueva función al final del archivo de perfil de su bash y reinicie su terminal, luego puede ejecutar cdd
o cualquiera que sea la función que escribió.
Ejemplo de guion
Hacer acceso directo a cd ..
concdd
cdd() {
cd ..
}
atajo de ls
ll() {
ls -l -h
}
atajo de ls
lll() {
ls -l -h -a
}