Ok, ik weet dat dit heel eenvoudig zou moeten zijn, maar na een uurtje googelen en verschillende soorten, maten en aantallen quotes proberen, ben ik de weg helemaal kwijt.
Ik heb een alias / functie in /.bash_aliases:
De bedoeling is dat de preload-functie een subshell opent en daarin de settings sourced en dan het overgebleven programma uitvoert met eventuele argumenten. Ik wil namelijk absoluut niet de settings gesourced hebben in de huidige open shell! Dus ik gebruik het bijvoorbeeld zo:
Het rare is dat "software" wel opent, maar project.file volgens mij niet meekrijgt, want hij opent het project niet. Als ik gewoon in mijn shell eerst het source commando uitvoer en vervolgens alleen "software project.file" in type werkt het wel prima.
De uitkomst van
is wel
In plaats van $@ kan ik misschien $* gebruiken, maar dat gaat fout als je strings meegeeft in de shell (zoiets als " preload software project.file "long text argument" "), want dat wordt dat argument dat gequote is alsnog opgebroken in losse woorden.
Bedankt!
Ik heb een alias / functie in /.bash_aliases:
C:
1
2
3
4
| #!/bin/bash preload () { bash -c "source /opt/software/settings.sh && "$@"" } |
De bedoeling is dat de preload-functie een subshell opent en daarin de settings sourced en dan het overgebleven programma uitvoert met eventuele argumenten. Ik wil namelijk absoluut niet de settings gesourced hebben in de huidige open shell! Dus ik gebruik het bijvoorbeeld zo:
C:
1
| ~$> preload software project.file |
Het rare is dat "software" wel opent, maar project.file volgens mij niet meekrijgt, want hij opent het project niet. Als ik gewoon in mijn shell eerst het source commando uitvoer en vervolgens alleen "software project.file" in type werkt het wel prima.
De uitkomst van
C:
1
2
3
| preload_test () { echo bash -c "source /opt/software/settings.sh && "$@"" } |
is wel
bash -c source /opt/software/settings.sh && sofware project.fileDus dat ziet er op zich goed uit. Wat gaat hier mis? Ik heb al geprobeerd $@ niet te quoten, maar dat geeft hetzelfde resultaat: het project wordt niet automatisch geopend. Ook heb ik geprutst met enkele, en dubbel dubbele quotes en escapes, etc...
In plaats van $@ kan ik misschien $* gebruiken, maar dat gaat fout als je strings meegeeft in de shell (zoiets als " preload software project.file "long text argument" "), want dat wordt dat argument dat gequote is alsnog opgebroken in losse woorden.
Bedankt!