Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/12/2022, à 19:39

Q7frkz

Question script, cd, source, bash

Salut à vous,
je me fais un long script pour réinstaller un max de choses, lorsque je remets mon ubuntu à zéro

Les choses que je n'arrive pas à faire:

cd "un dossier"
source ~/.bashrc <<ou>> bash

ou comment puis-je faire autrement car à priori le 'cd' ne fonctionne pas

Merci à vous

Dernière modification par Q7frkz (Le 12/12/2022, à 20:00)

Hors ligne

#2 Le 12/12/2022, à 20:42

Tawal

Re : Question script, cd, source, bash

Hello,

C'est trop vague ...

Et je dirais : pas besoin de cd dans un script, on peut tout faire à distance.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#3 Le 12/12/2022, à 20:47

Q7frkz

Re : Question script, cd, source, bash

Tawal a écrit :

Hello,

C'est trop vague ...

Et je dirais : pas besoin de cd dans un script, on peut tout faire à distance.

oui, je suis un peu con pour le 'cd' XD (je fais tellement de copier/coller à la fin que je ne me pose pas les bonnes questions)
et si j'ai besoin d'un "source ~/.bashrc", c'est possible ca ?

en gros :

echo "alias xx='ls'" >> ~/.basrc (fonctionne)
source ~/.bashrc (donne l'impression de fontionner)
xx (ne fonctionne pas)

Dernière modification par Q7frkz (Le 12/12/2022, à 20:49)

Hors ligne

#4 Le 12/12/2022, à 21:20

pingouinux

Re : Question script, cd, source, bash

Bonsoir,
Tu écris l'alias à la fin du fichier. Peut-être qu'une instruction arrête l'exécution de .bashrc avant la fin.

Hors ligne

#5 Le 12/12/2022, à 21:35

Watael

Re : Question script, cd, source, bash

il y a tellement de chose dans un .basrc que le sourcer dans un script est au mieux inutile, mais pourrait être nuisible.
d'autre part, ce n'est pas parce que tu sources .bashrc que les modification seront prises en compte en sortant du script, parce que le fichier est sourcé dans l'environnement du script qui disparaît lorsque ce dernier se termine.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#6 Le 12/12/2022, à 22:08

Tawal

Re : Question script, cd, source, bash

en gros :

echo "alias xx='ls'" >> ~/.basrc (fonctionne)
source ~/.bashrc (donne l'impression de fontionner)
xx (ne fonctionne pas)

Une erreur sur la 1ère commande, la redirection se fait vers ~/.basrc et non ~/.bashrc.

Bref, sans plus de détail ...

Dernière modification par Tawal (Le 12/12/2022, à 22:08)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#7 Le 12/12/2022, à 22:18

Watael

Re : Question script, cd, source, bash

et puis (ça me revient à l'instant), par défaut, les alias sont désactivés dans les scripts.

Dernière modification par Watael (Le 12/12/2022, à 22:21)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#8 Le 12/12/2022, à 22:31

Tawal

Re : Question script, cd, source, bash

+1
Et une alternative est :

monalias="commande"
$monalias arguments de la commande

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#9 Le 13/12/2022, à 01:38

Watael

Re : Question script, cd, source, bash

une meilleure alternative est une fonction.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#10 Le 13/12/2022, à 06:56

bruno

Re : Question script, cd, source, bash

Watael a écrit :

et puis (ça me revient à l'instant), par défaut, les alias sont désactivés dans les scripts.

Es-tu sûr de cela ?
Pour moi les alias fonctionnent dans les scripts et il est même nécessaire de prendre la précaution avec unalias -adans certaines circonstances.

Dernière modification par bruno (Le 13/12/2022, à 08:51)

#11 Le 13/12/2022, à 07:27

matrix-bx

Re : Question script, cd, source, bash

Salut,

matrix-bx@laptop:~$ cat test.sh 
#!/usr/bin/env bash
la
matrix-bx@laptop:~$ ./test.sh 
./test.sh: ligne 2: la : commande introuvable
matrix-bx@laptop:~$

Utilisations des balises de mises en formes.

Hors ligne

#12 Le 13/12/2022, à 07:54

Watael

Re : Question script, cd, source, bash

bruno a écrit :
Watael a écrit :

et puis (ça me revient à l'instant), par défaut, les alias sont désactivés dans les scripts.

Es-tu sûr de cela ?

oui.
edit :

man bash a écrit :

       Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set us‐
       ing shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

\edit

#!/bin/bash

shopt expand_aliases

alias la='ls -lA'
la
$ /tmp/aliases.bash
expand_aliases  off
/tmp/aliases.bash: ligne 6: la : commande introuvable
$

Dernière modification par Watael (Le 13/12/2022, à 08:39)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#13 Le 13/12/2022, à 08:32

Q7frkz

Re : Question script, cd, source, bash

ok, interessant

j'ai retrouvé pourquoi j'avais besoin de 'cd':

cd ~/xx
mkdir build && cd build
cmake ..

peut etre remplacé par

cmake -B/path/to/my/build/folder -S/path/to/my/source/folder

PS: le .basrc ce n'était qu'une faute faite ici mais pas dans mon terminal

Enfin bon à moi de fouiller en fait, rien de bien compliqué dans ce que je fais

Hors ligne

#14 Le 13/12/2022, à 08:50

bruno

Re : Question script, cd, source, bash

J'aurais dû vérifier avant wink
Effectivement, j'ai trouvé aussi la référence dans le manuel Bash. Je ne sais plus pourquoi j'ai eu besoin de ce unalias dans certains scripts (sans doute des commandes testées en mode interactif et non retestées à l'intérieur du script).

#15 Le 14/12/2022, à 07:53

serged

Re : Question script, cd, source, bash

Tawal a écrit :

Hello,

en gros :

echo "alias xx='ls'" >> ~/.basrc (fonctionne)
source ~/.bashrc (donne l'impression de fontionner)
xx (ne fonctionne pas)

En gros :
xx n'est pas exécutable à sa création. Il faut rajouter avant de le lancer.
Et comme il n'est pas dans le $PATH, il faut utiliser le chemin complet de xx :

chmod +x xx
./xx

Sinon utiliser "source" :

source xx

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#16 Le 14/12/2022, à 09:23

MicP

Re : Question script, cd, source, bash

Bonjour serged

Q7frkz n'a pas créé un script nommé xx
mais il a utilisé la commande alias pour créer un alias nommé xx

Il te faut regarder la description de commande alias (et unalias)
qui est une des commandes internes (builtins) de l'interpréteur de commandes bash

Pour visualiser directement la page concernée dans le manuel des commandes internes du bash
entre une des lignes de commandes suivantes :

man --pager='less -p "alias \["' builtins
man --pager='less -p "unalias \["' builtins

=======
Tu peux aussi rechercher dans la page du manuel toutes les occurrences de la suite de caractère alias
en l'utilisant comme motif de recherche quand tu visualises le manuel de bash ou des builtins :

Donc, tu entres une des lignes de commande suivantes :

man bash

ou bien :

man builtins

et quand le manuel s'affiche, tu tapes sur le caractère /
et tu entres juste après le motif de recherche que tu veux.
Ce qui fait que tu entres :

/alias

Ensuite, pour passer à l’occurrence suivante trouvée, tu tapes sur la touche n
et pour passer à l’occurrence précédente, tu tapes sur la touche N

Ce sont des fonctionnalités du pager less qui est le programme utilisé pour afficher les pages des manuels
qui sont d'abord préformatées par la commande man

Et quand la commande less affiche une page de manuel (ou autre chose)
tu peux faire s'afficher une aide en ligne de la commande less en tapant sur la touche h ou H

Dernière modification par MicP (Le 15/12/2022, à 01:42)

Hors ligne

#17 Le 15/12/2022, à 11:58

choops

Re : Question script, cd, source, bash

Q7frkz a écrit :

ok, interessant

j'ai retrouvé pourquoi j'avais besoin de 'cd':

cd ~/xx
mkdir build && cd build
cmake ..

peut etre remplacé par

cmake -B/path/to/my/build/folder -S/path/to/my/source/folder

PS: le .basrc ce n'était qu'une faute faite ici mais pas dans mon terminal

Enfin bon à moi de fouiller en fait, rien de bien compliqué dans ce que je fais

Bonjour

"cd" dans un script, de toute façon, ce n'est pas génial... il vaut mieux lui préférer "pushd" (et "popd" pour revenir là où tu étais avant ton changement de dossier)
de même, il vaut mieux utiliser "${HOME}" que  "~"

Un autre truc, si ton dossier ~/xx/build existe déjà la commande 'cd build' sera sans effet puisque 'mkdir build' tombe en erreur avec la formulation suivante:

mkdir build && cd build

En résumé:

#!/usr/bin/env bash

my_dir="${HOME}/xx/build"

mkdir -p "${my_dir}"

pushd "${my_dir}" >/dev/null
cmake ..
popd >/dev/null

Dernière modification par choops (Le 15/12/2022, à 12:05)

Hors ligne

#18 Le 15/12/2022, à 14:43

Watael

Re : Question script, cd, source, bash

c'est pour quoi faire les accolades ?
parce que si elles ne servent à rien, ici, pourquoi les mettre !?

dans un script, ce n'est pas cd le "problème", c'est les changements de répertoire; alors cd/pushd/popd, c'est pareil.
pour un script aussi court, voire dans un script, tout court, jouer avec la pile des répertoires est-il vraiment préférable ?


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#19 Le 15/12/2022, à 14:58

matrix-bx

Re : Question script, cd, source, bash

Salut,
je dirais que ça permet de s'affranchir de ce genre de désagréments :

$ my_dir="/home/matrix-bx/"
$ echo $my_dir
/home/matrix-bx/
$ echo $my_dir_

$ echo ${my_dir}_
/home/matrix-bx/_
$

Bonne journée

Dernière modification par matrix-bx (Le 15/12/2022, à 14:58)


Utilisations des balises de mises en formes.

Hors ligne

#20 Le 15/12/2022, à 15:03

Watael

Re : Question script, cd, source, bash

mais c'est bien ce que je dis, ici (puisque ce n'est pas le cas), ça ne sert à rien.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#21 Le 15/12/2022, à 15:19

Hizoka

Re : Question script, cd, source, bash

matrix-bx, je te soutiens tongue
J'utilise par défaut ${} aussi au gram dam de Watael big_smile
Oui c'est parfois inutile mais comme indiqué ça peut éviter des erreurs de code/frappe.
Et ça apporte une homogénéité.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#22 Le 15/12/2022, à 15:27

Watael

Re : Question script, cd, source, bash

homogénéité ?
au point de ne plus savoir quand ça marque un comportement particulier/spécial ?
vive l'uniforme ! roll


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#23 Le 15/12/2022, à 15:28

matrix-bx

Re : Question script, cd, source, bash

Chacun fait bien comme il préfère
J'ai vu cette manière de faire plusieurs fois conseillée comme au point 9 là.


Utilisations des balises de mises en formes.

Hors ligne

#24 Le 15/12/2022, à 15:43

choops

Re : Question script, cd, source, bash

Hizoka a écrit :

matrix-bx, je te soutiens tongue
J'utilise par défaut ${} aussi au gram dam de Watael big_smile
Oui c'est parfois inutile mais comme indiqué ça peut éviter des erreurs de code/frappe.
Et ça apporte une homogénéité.

Pas mieux

Hors ligne

#25 Le 15/12/2022, à 16:39

Watael

Re : Question script, cd, source, bash

vous ne changerez pas d'avis.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne