GNU/Linux >> Tutoriales Linux >  >> Linux

Cambie el directorio de trabajo en Shell con un script de python

Eso no va a ser posible.

Su secuencia de comandos se ejecuta en un subshell generado por el shell principal donde se emitió el comando.

Cualquier cd lo que se hace en el sub-shell no afecta al shell padre.


Otros han señalado que no se puede cambiar el directorio de trabajo de un padre a un hijo.

Pero hay una forma en que puede lograr su objetivo:si hace un cd desde una función de shell, puede cambiar el directorio de trabajo. Agregue esto a su ~/.bashrc:

go() {
    cd "$(python /path/to/cd.py "$1")"
}

Su secuencia de comandos debe imprimir la ruta al directorio al que desea cambiar. Por ejemplo, este podría ser su cd.py:

#!/usr/bin/python
import sys, os.path
if sys.argv[1] == 'tdi': print(os.path.expanduser('~/long/tedious/path/to/tdi'))
elif sys.argv[1] == 'xyz':  print(os.path.expanduser('~/long/tedious/path/to/xyz'))

Entonces puedes hacer:

[email protected]:/home/$> go tdi
[email protected]:/home/tdi$> go tdi

cd se implementa exclusivamente (?) como un comando interno del shell, porque ningún programa externo puede cambiar el CWD del shell principal.


Como escribe codaddict, lo que sucede en su subcapa no afecta a la capa principal. Sin embargo, si su objetivo es presentarle al usuario un shell en un directorio diferente, siempre puede hacer que Python use os.chdir para cambiar el directorio de trabajo del sub-shell y luego lanzar un nuevo caparazón de Python. Esto no cambiará el directorio de trabajo del shell original, pero dejará al usuario con uno en un directorio diferente.


Linux
  1. Cómo cambiar una palabra en un archivo con script de shell de Linux

  2. ¿Es posible una secuencia de comandos mixta de shell y python?

  3. La línea Shebang de Ubuntu Python no funciona

  4. Shell script cambia de directorio con variable

  5. El script Nohup para Python no funciona cuando se ejecuta en segundo plano con &

Cómo ejecutar un comando de Shell con Python

No se puede matar el script de Python con Ctrl-C

¿Depuración en pyCharm con privilegios de sudo?

Cómo matar el script de python con el script bash

Verifique la contraseña del usuario con un script de shell

¿Plantillas con Linux en un script de Shell?