OVH Cloud OVH Cloud

command search path

4 réponses
Avatar
nicolas_laurent545
Je suis nouveau =E0 linux et j'utilise ubuntu. J'ai install=E9 un
programme qui comprend des modules perl et une fois install=E9e on me
demande
you should add /home/laurent/reg/cmd and home/laurent/reg/bin to the
command search path.

Comme d=E9butant, j'ai cherch=E9 l'information
J'ai essay=E9 gedit .profile --- le fichier n'existe pas.
J'ai essay=E9 gedit .cshrc -- le fichier n'exite pas
J'ai essay=E9 la commande set path - le syst=E8me n'accepte pas la
syntaxe.

Je vous prie de m'aider.
Merci

4 réponses

Avatar
david
wrote:
Je suis nouveau à linux et j'utilise ubuntu. J'ai installé un
programme qui comprend des modules perl et une fois installée on me
demande
you should add /home/laurent/reg/cmd and home/laurent/reg/bin to the
command search path.

Comme débutant, j'ai cherché l'information
J'ai essayé gedit .profile --- le fichier n'existe pas.
J'ai essayé gedit .cshrc -- le fichier n'exite pas
J'ai essayé la commande set path - le système n'accepte pas la
syntaxe.

Je vous prie de m'aider.
Merci



Salut,

D'abord quel est ton shell: reponse avec la commande
grep laurent /etc/passwd
le dernier champ indique ton shell.
Si c'est bash, c'est du Bourne Shell (sh).
c'est c'est csh ou tcsh c'est du C-Shell (csh).

Il y en a d'autre. Certains te diront: zsh rulez ou encore ksh (Zarb Shell
et Korn Shell) (ce sont tous les deux des bourne shell encore que le zarb il
fait meme le café alors il est peut être cshell aussi, voir sur zsh.org moi
j'ai pas le courage ;-). Je vais me limiter à "Turbo-C-SHell" et "Bourne
Again SHell".

En bourne shell (le plus répandu dans le monde du libre, parce qu'utilisé
par défaut dans la plupart des distributions linux standard sour la forme de
bash), on ajoute un repertoire dans le path avec la commande suivante:
PATH="${PATH}:/home/laurent/reg/cmd:/home/laurent/reg/bin"
export PATH
ou encore (pour les extensions du bourne shell, )
export PATH="${PATH}:/home/laurent/reg/cmd:/home/laurent/reg/bin"
(pas d'espace autour du =)

En C-Shell (très répandu aussi, il reste un gros tas d'habitués et/ou
irréductibles), c'est
setenv PATH "${PATH}:/home/...:/home/..."
(pas d'=)

Ces commandes peuvent être executées en ligne de commande, mais il faut
evidemment les mettre dans le fichier de démarrage du shell en question si
tu veux les rendre perennes :

Pour bash c'est ~/.bash_profile, pour tcsh c'est ~/.login. Attention ces
fichiers sont lus si le shell executé est un LOGIN shell, c-a-d c'est le
premier shell de la session. Il ne sont en principe pas relus jusqu'au
logout (en shell, si tu es laurent, ~, ~laurent, $HOME, ${HOME} sont tous
les mêmes à des nuances près: /home/laurent).

Par contre les fichiers ~/.bashrc et ~/.tcshrc sont lus à chaque lancement
d'un shell (et pour ce shell seulement). Dans ces fichiers on met en général
les alias.

Dans .bash_profile (ou .login) on met les PATH (plus généralement les
variables d'environnement). Evidemment si tu viens de le modifier il faut
forcer l'execution du fichier (sauf si tu te deloggues et reloggues mais bon
on fait jamais ça sous unix parce que on ne fait jamais rien si ce n'est pas
nécessaire, du moins on essaye ;-) avec la commande

source .bash_profile (en bourne shell)
. .bash_profile (equivalent)
ou
source .login (en c-shell)

Je ne pense pas avoir dit de bêtise, mais je suis sûr qu'il y a commentaires
à faire.

Bon alleï je retourne bosser, c'était mon ¼ d'heure.

david

Avatar
Stephane Chazelas
On 16 Feb 2006 16:12:12 GMT, david wrote:
[...]
En bourne shell (le plus répandu dans le monde du libre, parce qu'utilisé
par défaut dans la plupart des distributions linux standard sour la forme de
bash)


????

Le Bourne shell est un shell qui a existé et qu'on trouve encore
sous certains Unix (par exemple, /bin/sh sous Solaris est encore
un Bourne shell!).

Mais maintenant, les "/bin/sh" ne sont plus des Bourne shells,
ils ont en commun le fait d'etre conformant a une norme, la
norme Unix. bash, ksh, zsh en mode sh sont plus ou moins
conformes a cette norme. Le Bourne shell n'est pas conforme a
cette norme. Un script ecrit pour le Bourne shell aura des
chances d'y etre conforme, etant donné, qu'a quelques exception
cette norme decrit un shell qui implemented un sur-ensemble des
fonctionnalités du Bourne shell.

on ajoute un repertoire dans le path avec la commande suivante:
PATH="${PATH}:/home/laurent/reg/cmd:/home/laurent/reg/bin"
export PATH


Si PATH etait non-defini, ca met le repertoire courant en tete
du $PATH, pas bon.

ou encore (pour les extensions du bourne shell, )
export PATH="${PATH}:/home/laurent/reg/cmd:/home/laurent/reg/bin"
(pas d'espace autour du =)

En C-Shell (très répandu aussi, il reste un gros tas d'habitués et/ou
irréductibles), c'est
setenv PATH "${PATH}:/home/...:/home/..."
(pas d'=)


En csh, tcsh, autant utiliser

set path = ($path /home/laurent/reg/{cmd,bin})

Pareil, avec zsh, on peut faire:

path+=(~/reg/{cmd,bin})

On peut noter le typeset -U path
pour eviter les repertoires apparaissant deux fois dans le
$PATH.

[...]
Par contre les fichiers ~/.bashrc et ~/.tcshrc sont lus à chaque lancement
d'un shell (et pour ce shell seulement). Dans ces fichiers on met en général
les alias.


Oui, encore que pour bash, c'est plus obscure. Le .bashrc n'est
pas lu par les shells de login, il n'est pas lu par les shells
non-interactifs, sauf si ces shells sont lancé par rshd/sshd et
autres bizarreries.

~/.zshrc est lu par les zsh interactifs, ya pas de surprise.


Dans .bash_profile (ou .login) on met les PATH (plus généralement les
variables d'environnement). Evidemment si tu viens de le modifier il faut
forcer l'execution du fichier (sauf si tu te deloggues et reloggues mais bon
on fait jamais ça sous unix parce que on ne fait jamais rien si ce n'est pas
nécessaire, du moins on essaye ;-) avec la commande

source .bash_profile (en bourne shell)
. .bash_profile (equivalent)
ou
source .login (en c-shell)

Je ne pense pas avoir dit de bêtise, mais je suis sûr qu'il y a commentaires
à faire.
[...]


Ou:

exec zsh

pour relancer zsh.


--
Stephane

Avatar
Franck Chartrain
Bonjour,

Je suis nouveau à linux et j'utilise ubuntu. J'ai installé un
programme qui comprend des modules perl et une fois installée on me
demande
you should add /home/laurent/reg/cmd and home/laurent/reg/bin to the
command search path.

Comme débutant, j'ai cherché l'information
J'ai essayé gedit .profile --- le fichier n'existe pas.
Tu dois créer le fichier, par exemple avec la commande touch .profile


J'ai essayé gedit .cshrc -- le fichier n'exite pas
Idem, tu crées le fichier avec touch .cshrc


J'ai essayé la commande set path - le système n'accepte pas la
syntaxe.


Tu entres la commande env et ensuite tu ajoute dans la variable PATH
les chemins qui te sont nécessaires :
/home/laurent/reg/cmd:home/laurent/reg/bin (la séparation se fait avec
les deux points sans espaces.

Bon courage

Avatar
Stephane Chazelas
2006-02-16, 21:02(+01), Franck Chartrain:
Bonjour,

Je suis nouveau à linux et j'utilise ubuntu. J'ai installé un
programme qui comprend des modules perl et une fois installée on me
demande
you should add /home/laurent/reg/cmd and home/laurent/reg/bin to the
command search path.

Comme débutant, j'ai cherché l'information
J'ai essayé gedit .profile --- le fichier n'existe pas.
Tu dois créer le fichier, par exemple avec la commande touch .profile



???

Quel est l'interet de le creer vide?

J'ai essayé gedit .cshrc -- le fichier n'exite pas
Idem, tu crées le fichier avec touch .cshrc



idem?

J'ai essayé la commande set path - le système n'accepte pas la
syntaxe.


Tu entres la commande env et ensuite tu ajoute dans la variable PATH
les chemins qui te sont nécessaires :
/home/laurent/reg/cmd:home/laurent/reg/bin (la séparation se fait avec
les deux points sans espaces.
[...]


???

env est pour passer des variables d'environnement a une
commande.

env A=foo ls

lance ls avec A=foo dans son environnement, chose qu'un shell
sait faire tout seul:

A=foo ls

Pour modifier l'environnement d'un shell, en general, il suffit
de modifier la variable du shell du meme nom, et de l'exporter
dans l'environnement, si ce n'est pas deja le cas:

A=foo
export A

Pour que ce soit fait automatique au login, il faut le mettre
dans son fichier de configuration de session qui est different
suivant le shell de login. .profile, .bash_profile, .zprofile,
.login... cat c'est un fichier interpreté par le shell de login.

On pourrait aussi le mettre dans dans le fichier de demarrage du
shell (.bashrc, .zshrc, .cshrc...), mais pour une variable
d'environnement, vu que c'est quelque chose qui s'herite de
processus pere en processus fils, si on le met dans
l'environnement du shell de login, on est sur qu'il sera herité
par tous les processus lancés durant la session de login, donc
ce sera suffisant.

--
Stéphane