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

Question sur home/bin

#1Messageil y a 6 ans

Bonsoir,

J'essaie de m'initier (très doucement) aux scripts.
Je débute déjà simplement avec mes scripts courant et avec leur appel en bash.
Pour les exécuter facilement dans un terminal, au lieu de taper ./nomDuscrpt, je veux taper nomDuscript.
Pour cela, j'ai suivi le tutoriel d'Ubuntu-fr qui dit:
"Ajouter un répertoire au PATH peut donc être très pratique. Par convention, ce répertoire s'appelle bin et se place dans votre répertoire personnel. Si votre répertoire personnel est /home/toto, ce répertoire sera donc /home/toto/bin. Pour pouvoir utiliser mes scripts en tapant directement leur nom (sans le "./") depuis n'importe quel répertoire de mon ordinateur, il me suffit d'indiquer au shell de chercher aussi dans ce nouveau dossier en l'ajoutant au PATH. Pour ceci, il suffit de faire :

export PATH=$PATH:$HOME/bin

la commande

echo $PATH

retourne maintenant :

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/toto/bin
"
Ce qui est mon cas en appelant echo $PATH.
Mais, quand je tape monScript (en lui ayant donné les droits d'exécution), le retour :

[bruno@bruno-manjaro bin]$ chmod +x maj 
[bruno@bruno-manjaro bin]$ maj
bash: maj : commande introuvable


Comment cela se fait-il ?

Où se trouve mon erreur ?

Merci.
Dernière modification par obelix1502il y a 6 ans, modifié au total 1 fois.

Question sur home/bin

#2Messageil y a 6 ans

Bonjour
Personnellement, je crée mon script commençant par #! /bin/bash . Ensuite je le rend exécutable chmod a+x . A partir de là, soit je crée un lanceur qui pointe vers le script, soit je crée un alias :

echo "alias truc='./mon_script.sh' " >> ~/.bashrc

Une fois bash régénéré il suffit de taper bash mais d'autres préfère bash source...:gsourire: ,le script sera inclus dans le $PATH et en tapant l'alias, c'est parti! Ça peut aussi s'inscrire dans un autre script genre crontab...

Question sur home/bin

#3Messageil y a 6 ans

Merci lemust,

Mais si je crée un lanceur pour chacun de mes scrpts, mon tableau de bord va être vite plein là...

Pour les alias, il faut que je potasse la documentation :gsourire:

Question sur home/bin

#4Messageil y a 6 ans

salut,

j'utilise ta méthode et non celle de lemust83 car créer 56 alias n'est pas génial, si l'on crée des scripts bash il faut mieux les mettre dans un répertoire "bin" local, les alias sont utilisés justement si on ne crée pas de script.
Ta méthode est bonne et devrait marcher ... tu as bien modifier ton path dans ton .bashrc ?
je remarque juste que ton path est /home/toto/bin alors que ton login est bruno:confus:

le PATH est la liste des répertoires ou le shell va chercher la commande tapée en console, dans ton cas il va chercher dans /home/toto/bin :confus:

perso, j'utilise $HOME/.local/bin (norme systemd) et non $HOME/bin (norme ubuntu)

Question sur home/bin

#5Messageil y a 6 ans

Salut papajoke,

Voici le contenu du .bashrc :

# ~/.bashrc
#

[[ $- != *i* ]] && return

colors() {
        local fgc bgc vals seq0

        printf "Color escapes are %s\n" '\e[${value};...;${value}m'
        printf "Values 30..37 are \e[33mforeground colors\e[m\n"
        printf "Values 40..47 are \e[43mbackground colors\e[m\n"
        printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"

        # foreground colors
        for fgc in {30..37}; do
                # background colors
                for bgc in {40..47}; do
                        fgc=${fgc#37} # white
                        bgc=${bgc#40} # black

                        vals="${fgc:+$fgc;}${bgc}"
                        vals=${vals%%;}

                        seq0="${vals:+\e[${vals}m}"
                        printf "  %-9s" "${seq0:-(default)}"
                        printf " ${seq0}TEXT\e[m"
                        printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
                done
                echo; echo
        done
}

[[ -f ~/.extend.bashrc ]] && . ~/.extend.bashrc

[ -r /usr/share/bash-completion/bash_completion   ] && . /usr/share/bash-comple$

export VISUAL="nano"
alias maj="./maj.sh"
export PATH=$PATH:$HOME/bin


Mais j'ai toujours dans le terminal même si je lance via l'alias créé comme lemust le disait : maj ==> ./maj.sh aucun fichier de ce type.

Et echo $PATH :

echo $PATH
/usr/sbin:/sbin:/bin:/usr/games:/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:/home/bruno/bin


Et via ./maj.sh même réponse.

Le toto n'est que l'exemple repris dans ubuntu-fr, le mien est /home/bruno/bin :confus:

Question sur home/bin

#6Messageil y a 6 ans

Ok, j'ai suivi ton conseil papajoke et c'est résolu.

En employant la méthode "ubuntu" ==> créer un dossier bin dans home, pas de prise en compte.

En plaçant mes scripts dans /home/bruno/.local/bin, c'est parfait. ;)

Question sur home/bin

#7Messageil y a 6 ans

pas trop compris.
bien sur on n'utilise pas l'alias ET le PATH c'est l'un ou l'autre
Pour le répertoire, pour linux cela ne change strictement rien que tu utilises ./local/bin ou /bin, les 2 fonctionnent très bien.
Répondre