J'ai installé Ruby, RVM et Jekyll en suivant ce tutoriel et tout fonctionne bien après avoir suivi ces étapes.
Mon problème est qu'à chaque fois que j'ouvre une nouvelle fenêtre de terminal et que Jekyll reconstruit le site avec jekyll build
, J'obtiens l'erreur jekyll: command not found
. La solution temporaire consiste à réexécuter les deux commandes suivantes à partir du didacticiel, puis Jekyll fonctionne:
[[ -s "$HOME/.profile" ]] && source "$HOME/.profile"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
En vérifiant ce fichier .profile, j'ai remarqué qu'il dit "Ce fichier n'est pas lu par bash, si ~/.bash_profile ou ~/.bash_login existe". J'ai de nouveau exécuté les deux premières commandes en remplaçant .bash_profile par .profile et cela n'a pas semblé avoir d'effet.
[[ -s "$HOME/.bash_profile" ]] && source "$HOME/.bash_profile"
J'obtiens toujours l'erreur Jekyll et mon fichier .bash_profile existe mais est complètement vide.
Existe-t-il un correctif plus permanent ou suis-je bloqué en exécutant les deux premières commandes chaque fois que j'ouvre un terminal pour reconstruire un site avec Jekyll?
~/.bashrc
sera appelé pour interactif + non-loginshell
tandis que ~/profile
sera appelé pour interactif + shell de connexion
La manière recommandée est de mettre
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
dans le ~/.profile
lui-même mais dans .bash_profile
mettre source "$HOME/.profile
.
Et la deuxième façon serait d'ajouter
`[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" `
dans ton .bashrc
.
Ici est la raison pour laquelle la deuxième méthode n'est pas très recommandée.
Plus d'informations.bashrc
, .profile
et bash_profile
.
Vous pouvez créer un alias pour les trois commandes ci-dessus.
alias jekyllb='[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" && [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" && jekyll build'
Par conséquent, chaque fois que vous exécutez jekyllb
, les trois commandes sont exécutées de manière séquentielle.