GNU/Linux >> Tutoriels Linux >  >> Linux

Changer le répertoire de travail dans le shell avec un script python

Cela ne sera pas possible.

Votre script s'exécute dans un sous-shell généré par le shell parent où la commande a été émise.

Tout cd les modifications effectuées dans le sous-shell n'affectent pas le shell parent.


D'autres ont souligné que vous ne pouvez pas changer le répertoire de travail d'un parent à partir d'un enfant.

Mais il existe un moyen d'atteindre votre objectif - si vous utilisez un cd à partir d'une fonction shell, il peut changer le répertoire de travail. Ajoutez ceci à votre ~/.bashrc :

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

Votre script doit imprimer le chemin d'accès au répertoire vers lequel vous souhaitez passer. Par exemple, cela pourrait être votre 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'))

Ensuite, vous pouvez faire :

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

cd est exclusivement (?) implémenté en tant que commande interne du shell, car aucun programme externe ne peut modifier le CWD du shell parent.


Comme l'écrit codaddict, ce qui se passe dans votre sous-shell n'affecte pas le shell parent. Cependant, si votre objectif est de présenter à l'utilisateur un shell dans un répertoire différent, vous pouvez toujours demander à Python d'utiliser os.chdir pour changer le répertoire de travail du sous-shell puis lancer un nouveau shell de Python. Cela ne changera pas le répertoire de travail du shell d'origine, mais en laissera un à l'utilisateur dans un répertoire différent.


Linux
  1. Quel interpréteur Shell exécute un script sans Shebang ?

  2. D'où est exécuté un script Shell ?

  3. Comment exécuter des scripts Python à partir du shell

  4. Comment changer un mot dans un fichier avec un script shell Linux

  5. Script mixte shell et python possible ?

Algèbre vectorielle sur Scientific Linux 7.1 avec Python Script :Partie 1

Comment exécuter une commande Shell avec Python

Déboguer dans pyCharm avec les privilèges sudo ?

Comment tuer le script python avec le script bash

Vérifier le mot de passe de l'utilisateur avec un script shell

Créer des modèles avec Linux dans un script Shell ?