Commande qui mene directement vers un répertoire donné [résolu] - Shell/Batch - Programmation
Marsh Posté le 17-05-2010 à 17:30:21
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.
Marsh Posté le 18-05-2010 à 00:14:26
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 |
Bon Courage, en espérant que ça aide (et que je n'ai pas oublié de solutions)
Marsh Posté le 18-05-2010 à 21:58:13
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.
Marsh Posté le 19-05-2010 à 13:51:53
et un alias tout simplement dans le .bashrc ?
EDIT : genre : alias goimg='cd /chemin/absolu/vers/mon/repertoire'
Marsh Posté le 20-05-2010 à 09:57:42
Merci =), y'a un service à redemarrer ? (c'est un serveur de prod, donc un reboot, bof...)
Marsh Posté le 20-05-2010 à 10:01:18
logout tout bettement
Merci =) c'est exactement ce que je cherchais !
Marsh Posté le 17-05-2010 à 17:12:46
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:
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