#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
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.
Hors 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.
Hors 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.
Hors ligne
#10 Le 13/12/2022, à 06:56
- bruno
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.
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
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 :
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.
Hors 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
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
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
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.
Hors 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.
Hors ligne
#21 Le 15/12/2022, à 15:19
- Hizoka
Re : Question script, cd, source, bash
matrix-bx, je te soutiens
J'utilise par défaut ${} aussi au gram dam de Watael
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 !
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#24 Le 15/12/2022, à 15:43
- choops
Re : Question script, cd, source, bash
matrix-bx, je te soutiens
J'utilise par défaut ${} aussi au gram dam de Watael
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.
Hors ligne