Questions générales sur Manjaro Linux.
S'il vous plaît, avant de poster, essayez la fonction de recherche du forum.
Répondre

Comment modifier $PATH ?

#1Messageil y a 7 ans

Bonjour, :salut:
Voici mon petit et dernier problème : :sos:
J'ai installé l'exécutable my_program dans le répertoire /usr/local/mystuff :clap

Je désire pouvoir lancer ce programme directement depuis un teminal, sans devoir utiliser sudo et j'ai donc impérativement besoin de modifier la valeur de $PATH pour pouvoir pointer sur le répertoire /usr/local/mystuff de manière permanente (c'est à dire dès le boot). :roll:

Donc, la solution "simple" de lancer la commande PATH=$PATH"/usr/local/mystuff" avant l'exécution du script n'est, dans ce cas bien précis, pas appropriée. :siffle

J'ai bien rajouté :/usr/local/mystuff

- dans les lignes ENV_SUPATH PATH=... et ENV_PATH PATH=... du fichier /etc/login.defs
- et dans la ligne PATH=... du fichier /etc/environment
- et dans la ligne Defaults secure_path=... du fichier /etc/sudoers

mais sans succès car ce chemin (/usr/local/mystuff) n'est pris en compte qu'uniquement que lorque j'utilise (dans un terminal) la commande "sudo my-program" pour lancer mon programme,... mais JAMAIS lorsque je le lance directement (my_program) depuis un terminal (sans sudo) ! :saispas:

Malgré ces modifications, la commande echo $PATH me retourne systématiquement :

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

mais n'y ajoute pas :/usr/local/mystuff , ce qui devrait être pris en compte au strict minimum par la modification du fichier /etc/login.defs telle que décrite au dessus.

J'aimerai donc votre aide pour résoudre ce problème qui me semble un peu spécifique à Manjaro (et surement aussi à Arch et Bridge) car les modifications que je fais dans les fichiers cités plus haut fonctionnent parfaitement avec Debian (et ses spin off dont : elementary, LMDE, Mint, Ubuntu and Co. et Zorin) de même qu'avec Fedora (et ses spin off dont : CentOS et RedHat). :rendre:

Merci d'avance de votre aide car une fois ce problème résolu, je pourrai enfin vous proposer mon script qui est terminé et qui fonctionne parfaitement avec les différentes distributions citées précédemment. :rire .

Il serait vraiment domage que je ne puisse pas le présenter pour des distros Arch et dérivées dont Manjaro aue j'aime beaucoup car je pense que le programme (open source) que je vais vous proposer risque d'intéresser pas mal de monde venant de l'univers DOS et Windows et qui veut migrer vers Linux ! :cartonrouge:

Donc, encore merci de votre aide car je suis vraiment coincé. :tetu!

Merci d'avance de vos retours sur ce script. :aime:

Très cordialement.
Dernière modification par Fnuxil y a 7 ans, modifié au total 2 fois.

Comment modifier $PATH ?

#2Messageil y a 7 ans

Sur ton code, je ne saurais te répondre. Je n'ai pas suffisamment de connaissance en programmation. Je sais toutefois qu'on peu modifier le suid-bit d'un programme, mais c'est laisser grandes ouvertes les portes de la ville de Troie...
Reste à savoir ce que fait ton programme et comment tu l'as installé; il faut toujours construire un PKGBUILD et non utiliser la commande sudo make install. Si c'est un script bash, on peut très bien le laisser dans le /home/$USER et mettre un lanceur qui pointe dessus sans avoir a le placer dans /usr/bin, mais ça rend l'installation par yaourt délicate car pacman ne gère pas volontairement le contenu du /home...
Si tu tiens a le placer dans /usr il faut le rendre executable sudo chmod a+x mystuff et le placer dans /usr/local/bin. Là il sera dans le $PATH. Mais si tu construit un PKGBUILD, il faudra impérativement viser /usr/bin

Quoi qu'il en soit, la philosophie sous Gnu/Linux a pour axiome principal la sécurité; je sais que cette notion est assez abstraite pour les Window$siens comptant sur leur pare-feu flanqué d'un antivirus-obésiciel pour échapper aux binaires vérolés. Ils prennent toutefois une mauvaise habitude en lançant des programmes systèmes d'un simple clic. C'est pourquoi dans un système Unix-like, il vaut mieux les habituer a saisir leur MP. C'est aussi un bon moyen de comprendre la différence entre les comptes root et utilisateurs.
Ce n'est que mon avis et je sais que je ne répond pas directement à ta question, mais je pense qu'il faut garder le contrôle du mot de passe.

Comment modifier $PATH ?

#3Messageil y a 7 ans

bonjour,

pour modifier en permanence le PATH dans tous contextes, il faut ajouter un "script" dans /etc/profile.d/
par exemple :

#/etc/profile.d/mystuff.sh
setenv PATH "${PATH}:/usr/local/mystuff"

mais c'est très bizarre de ne pas vouloir installer ton programme dans /usr/local/bin :confus: bien que non utilisé avec archlinux

Comment modifier $PATH ?

#4Messageil y a 7 ans

Bonjour,
Pour mes Scripts personnels qui sont regroupés dans le dossier de ce nom , je me suis contenté d'ajouter à mon .zshrc (j'imagine que ça fonctionne aussi bien en .bashrc pour ceux qui restent en bash) :

# PATH vers Scripts
export PATH=$PATH:/home/waitnsea/Scripts/

Pour lancer depuis un terminal ça suffit, et de plus on peut (facilement sous KDE en éditant le menu) fabriquer des lanceurs avec icônes.
Edit : c'est HS mais ça peut servir... :sourire:

Comment modifier $PATH ?

#5Messageil y a 7 ans

Salut,
papajoke a écrit :mais c'est très bizarre de ne pas vouloir installer ton programme dans /usr/local/bin :confus: bien que non utilisé avec archlinux

Je partage cet avis, la plupart, si ce n'est toutes les distribs, ont /usr/local/bin et /usr/local/sbin dans /etc/profile, ce qui éviterait de bidouiller le path.

Comment modifier $PATH ?

#6Messageil y a 7 ans

@ waitnsea
je ne suis pas fan du ~/Scripts/

normalement c'est plutôt :
  • ~/bin/
  • ~/.local/bin/ :aime: for me (voir man)


systemd-path | grep user-bin
  user-binaries: /home/patrick/.local/bin

Comment modifier $PATH ?

#7Messageil y a 7 ans

papajoke a écrit :@ waitnsea
je ne suis pas fan du ~/Scripts/

normalement c'est plutôt :
  • ~/bin/
  • ~/.local/bin/ :aime: for me

systemd-path | grep user-bin
  user-binaries: /home/patrick/.local/bin

Oui, mais ce sont de petits scripts bash ou python, évolutifs et/ou servant de modèles.
C'est plus facile d'y accéder en user et dans un fichier non caché, non ?
Un vrai programme ce serait différent, mais ça demande aussi un vrai développeur :lol:

Comment modifier $PATH ?

#8Messageil y a 7 ans

Bonsoir à tous. :salut:

Merci de vos différentes suggestions. :merci:

Pour mon besoin particulier, j'opte pour la solution de papajoke : :maître:

papajoke a écrit :

#/etc/profile.d/mystuff.sh
setenv PATH "${PATH}:/usr/local/mystuff"

Mais en regardant de plus près les exemples des scripts de ce répertoire, j'ai choisit de faire ceci :

echo "# Set path to MYSTUFF folder if it exists." >> /etc/profile.d/mystuff.sh
echo "# Added /usr/local/mystuff folder for myprogram." >> /etc/profile.d/mystuff.sh
echo "[ -d /usr/local/mystuff ] && PATH=$PATH:/usr/local/mystuff" >> /etc/profile.d/mystuff.sh

Et cela fonctionne très bien. :fete:

Maintenant, question subsidiare : à quoi servent les fichiers identiques mais nommés avec l'extention .csh qui sont présents dans le répertoire /etc/profile.d ? :rendre:

Par contre je n'ai pas suivit cette option : :cartonrouge:

papajoke a écrit :mais c'est très bizarre de ne pas vouloir installer ton programme dans /usr/local/bin :confus: bien que non utilisé avec archlinux


Pourquoi ? :idee:

Justement par ce que ce n'est "à priori" pas supporté par ArchLinux et que mon script doit aussi fonctionner avec Arch mais aussi Bridge (et d'éventuelles autres spin off que je ne connais pas). :saispas:

A ce propos, merci de m'en suggérer (des spin off d'ArchLinux). :siffle

Merci encore à tous de votre aide. :merci::maître::merci::maître::merci::maître:

Je posterai mon script ici dès que je l'aurai validé pour Manjaro (soit surement d'ici la fin de cette semaine). :café:

Cordialement. :aime:

Comment modifier $PATH ?

#9Messageil y a 7 ans

Fnux a écrit :Justement par ce que ce n'est "à priori" pas supporté par ArchLinux et que mon script doit aussi fonctionner avec Arch mais aussi Bridge (et d'éventuelles autres spin off que je ne connais pas). :saispas:

Structurellement, Manjaro est basée sur Arch, donc il n'y a pas vraiment de raison pour que le placement dans /usr/local/bin ne passe pas pour les deux distributions. Mais on attend ton code :manger:

Comment modifier $PATH ?

#10Messageil y a 7 ans

Fnux a écrit :Maintenant, question subsidiare : à quoi servent les fichiers identiques mais nommés avec l'extention .csh qui sont présents dans le répertoire /etc/profile.d ? :rendre:

Pour une utilisation avec un shell C, genre csh ou tcsh, je suppose.

papajoke a écrit :mais c'est très bizarre de ne pas vouloir installer ton programme dans /usr/local/bin :confus: bien que non utilisé avec archlinux


Pourquoi ? :idee:

Justement par ce que ce n'est "à priori" pas supporté par ArchLinux et que mon script doit aussi fonctionner avec Arch mais aussi Bridge (et d'éventuelles autres spin off que je ne connais pas). :saispas:


Il n'est pas utilisé, mais il est supporté, comme dans la plupart des distributions qui installent leurs applis dans /usr directement, voir le fichier /etc/profile par défaut dans Arch :
https://git.archlinux.org/svntogit/pack ... filesystem

Et souvent, lorsqu'on installe une appli non fourni dans les grosses distribs, le répertoire par défaut lors du make install est /usr/local, pour faire la distinction avec l'installation par les paquets.

Comment modifier $PATH ?

#11Messageil y a 7 ans

Bonsoir lemust83, :salut:

lemust83 a écrit :
Fnux a écrit :Mais on attend ton code :manger:

Merci à vous tous de votre aide.

Comme promis, je vous propose mon script (qui n'est pas tout à fait terminé sur un petit point de détail mais qui fonctionne parfaitement) via le post suivant : http://www.manjaro.fr/forum/viewtopic.php?f=28&t=7831

N'hésitez surtout pas à le critiquer et à me proposer vos améliorations. :maître:

Merci encore à tous de votre aide.

Cordialement.
Répondre