Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1760 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [résolu]Commande qui mene directement vers un répertoire donné

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu]Commande qui mene directement vers un répertoire donné

n°1993796
shadok_lul​z
Posté le 17-05-2010 à 17:12:46  profilanswer
 

Bonjour,
 
J'ai une question à laquelle l'ami google n'a aucune reponse.
 
Je bosse sur un site, dont les path sont assez long, j'ai créé un script shell dans mon rep perso contenant ceci
goimg:

Code :
  1. #!/bin/bash
  2. cd /chemin/absolu/vers/mon/repertoire


 
Pour changer de repertoire je fais donc:
$ . ~/goimg
 
Je voudrais que ça marche sans avoir à mettre le point avant l'appel du script.
 
Merci :)


Message édité par shadok_lulz le 20-05-2010 à 10:02:45
mood
Publicité
Posté le 17-05-2010 à 17:12:46  profilanswer
 

n°1993808
olivthill
Posté le 17-05-2010 à 17:30:21  profilanswer
 

Il faudrait alors mettre le point dans la variable d'environnement PATH dans le fichier .profile ou autre.
Par exemple :

PATH=.:/bin:/usr/lib


 
Edit : J'ai lu trop vite, et je n'ai pas vu l'espace derrière le point, donc ma solution n'est sans doute pas la bonne.


Message édité par olivthill le 17-05-2010 à 17:32:43
n°1993917
dreameddea​th
Posté le 18-05-2010 à 00:14:26  profilanswer
 

pour ce qui est du ".", tu es obligé de le mettre.
 
En effet

~/goimg

lance un sous-process (process fils) de type bash (grace au shebang, la première ligne du script), mais ISOLE : aucune modification du fils n'affectera le père (variable d'envir, changement de directory, ...)
 
Le "PATH" ne change rien à l'affaire, il ne sert qu'a chercher des executables (en fait, quand tu fais "cd xxx", tu fais en fait "/bin/cd xxx" grâce au fait que le path il y a "/bin" ).
 
Donc au mieux dans le PATH tu peux y mettre $HOME, mais ça ne marchera pas pour ". [fichier]" pour lequel la chaine "fichier" doit contenir le chemin
 
Le seul moyen est le "sourcing" ou "l'import" execute le code contenu dans le fichier indiqué dans le shell courant AVEC le shell courant (ksh si shell ksh, bash avec bash).  
 
C'est ce qui permet de changer le repertoire dans ton process courant (celui qui te permet d'executer des commandes)
 
Il est d'ailleurs dangereux de mixer car, si certaines syntaxes sont compatibles, d'autres ne le sont absoluement pas et donc dans un ksh faire un sourcing d'un fichier contenant du code "bash" (le shebang est ignoré) va parfois fonctionner (script "simple" ) mais souvent planter (bad substitution, ...).
 
Pour ton problème (si le . est vraiment rédhibitoire), il y a d'autres solutions :
- variables d'envir (dans le  ~/.profile faire un export CHEMIN=/chemin/absolu/vers/mon/repertoire) puis "cd $CHEMIN" après un . ~/.profile (ou logout/login)
- liens symboliques :

ln -s /chemin/absolu/vers/mon/repertoire ~/ln_simple
cd ~/ln_simple


 
Bon Courage, en espérant que ça aide (et que je n'ai pas oublié de solutions)


Message édité par dreameddeath le 18-05-2010 à 00:16:36
n°1994287
tuxerman12
Posté le 18-05-2010 à 21:58:13  profilanswer
 

Le PATH c'est le chemin de recherche des répertoires de commandes, et le ~ c'est le répertoire d'accueil relatif à chaque user qui exécute le script.
Si tu écris un script destiné à être exécuté par un user "système" qui n'a pas de PATH et de ~ , tu es obligé de définir un PATH ou de rentrer (presque) tous les chemins complets des commandes (il y a quelques commandes de base intégrées, dont cd) ou les définir dans des variables en début de script.

n°1994430
slywalker
Posté le 19-05-2010 à 13:51:53  profilanswer
 

et un alias tout simplement dans le .bashrc ?  :??:
 
EDIT : genre : alias goimg='cd /chemin/absolu/vers/mon/repertoire'


Message édité par slywalker le 19-05-2010 à 13:53:58
n°1994676
shadok_lul​z
Posté le 20-05-2010 à 09:57:42  profilanswer
 

Merci =), y'a un service à redemarrer ? (c'est un serveur de prod, donc un reboot, bof...)

n°1994679
shadok_lul​z
Posté le 20-05-2010 à 10:01:18  profilanswer
 

logout tout bettement
Merci =) c'est exactement ce que je cherchais !

n°1994680
shadok_lul​z
Posté le 20-05-2010 à 10:03:53  profilanswer
 

alias l='ls -la' est aussi fort appréciable.

n°1994756
slywalker
Posté le 20-05-2010 à 14:19:24  profilanswer
 

ben de rien  ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [résolu]Commande qui mene directement vers un répertoire donné

 

Sujets relatifs
[Résolu] Création de dossier et fichier impossible[Résolu] Problème variable php qui renvoie rien
[RESOLU] probleme d'espace et de point dans une recherche[RESOLU] mysql_query("UPDATE ce met à jour mais remplace au lieu...
[resolu] Probleme d'heritage des CSS[Résolu] Heure au hasard
[résolu] Problème sous firefox et IE8 pour répéter une image[RESOLU]execueter un .php en ligne de commande
[resolu] MySQL-Link resource - erreur de placement d'accolade. 
Plus de sujets relatifs à : [résolu]Commande qui mene directement vers un répertoire donné


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR