Momentan versuch ich mir Hugo beizubringen, die in Go geschriebene Template Engine zur Generierung statischer Seiten. Ich arbeite mich dabei an diesem Quickstart Guide mit der Bookshelf Site ab:
Um jedoch nicht immer im Terminal ellenlange Befehle eintippen zu müssen, habe ich versucht, mir ein Bash-Script zu schreiben, das mir dieses erspart. Leider bin ich als gelernter Mausschubser nicht der große Bash- (und noch (😇) nicht der große Hugo-) Spezialist und daher frage ich mich, warum dieses Skript
#!/bin/bash
PATH=$PATH:~/meinpfadzu/bookshelf:~/meinpfadzu/bookshelf/themes:/usr/local/bin
hugo --theme=hugo_theme_robust --config="~/meinpfadzu/bookshelf/config.toml"
immer behauptet, es sei Unable to locate Config file
? Ähnliche Skripte, die ich zum Beispiel für das Perl Template Toolkit geschrieben hatte, funktionieren anstandslos. Sicher ist es nur ein dummer Fehler, den ich übersehe. Falls jemand von Euch da draußen eine Lösung weiß, die oder den bitte ich um Antwort in meinen (Email-) Kommentaren.
4 (Email-) Kommentare
Mhm, ich habe keine Lösung, nur einen Workaround: Wenn im Skript in den Ordner gewechselt wird, in dem sich die config-Datei befindet, dann klappt es:
#!/bin/bash
cd /pfad/zum/ordner/mit/configfile
hugo
Für die Flucht aus den Datensilos: Es gibt ein Wordpress-Plugin namens »wordpress-to-hugo-exporter«, das genau das macht, was der Name verspricht. Habe es erfolgreich genutzt.
– Stefan U. (Kommentieren) (#)
Die Tilde
~
ist nur für Direkteingaben im Terminal gedacht. In Skripten solltest Du$HOME
benutzen.
– Karsten W. (Kommentieren) (#)
Beide haben recht :)
Mit Shellcheck.net kannst die gängigsten Fehler beim skripten verhindern. https://www.shellcheck.net/
Ich hab mir erlaubt, mal eine geschwätzige Variante zu bauen, mal sehen ob es hilft:
#!/bin/sh
PATH="${PATH}:${HOME}/meinpfadzu/bookshelf:${HOME}/meinpfadzu/bookshelf/themes:/usr/local/bin"
echo ${PATH}
# falls hugo sich selbst rekursiv oder andere tools aufruft, braucht es den PATH auch für diese Prozesse
export PATH
cd "${HOME}/meinpfadzu/bookshelf/" || exit 1
/bin/pwd
# Kommando anzeigen, dann ausführen
echo $(which hugo) --theme=hugo_theme_robust --config="${HOME}/meinpfadzu/bookshelf/config.toml"
hugo --theme=hugo_theme_robust --config="${HOME}/meinpfadzu/bookshelf/config.toml"
Vorsicht: richtigen Benutzeraccount benutzt?
${HOME}
löst zum Verzeichnis des Users auf, der das Skript ausführt!
Wenn das Skript und alles andere in/Users/hugo/meinpfadzu/bookshelf/hugoscript.sh
liegt und du aber gerade als joern eingeloggt bist, dann löst das in deiner bash trotzdem es unter/Users/hugo
liegt, zu...:/Users/joern/meinpfadzu/bookshelf:/Users/joern/meinpfadzu/bookshelf/themes:...
auf.
=> es wird nichts gefunden.
Warum nimmst du kein Makefile? da könntest das Deployment mit rsync und S3tools später auch reinmachen und auch so Sachen wie web precompression wären einfacher.
Und auch so Sachen wie das ausgeführte fertigevaluierte Kommando im Klartext auf der Konsole anzeigen ist da auch einfacher.
– Peter F. (Kommentieren) (#)
Die Tilde ~ kann sehr wohl in Shellskripten benutzt werden, muss aber ausserhalb der Hochkommata stehen, d.h. statt
hugo --theme=hugo_theme_robust --config="~/meinpfadzu/bookshelf/config.toml"
muss es
hugo --theme=hugo_theme_robust --config=~/"meinpfadzu/bookshelf/config.toml"
heissen.
Das kann interaktiv getestet werden durch:
echo "~/meinpfadzu/bookshelf/config.toml"
echo ~/"meinpfadzu/bookshelf/config.toml"
Die Ausgaben sind unterschiedlich.
Warum das so ist, findet sich in "man bash", suchen nach "Enclosing characters in double quotes". Die Tilde gehört zu den Zeichen, die innerhalb der Hochkommata keine besondere Bedeutung hat (preserves the literal value), also nicht (zum Benutzerverzeichnis) expandiert wird.
– Ralf P. (Kommentieren) (#)
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung