1

I've installed Ruby, RVM, and Jekyll following this tutorial and everything works fine after following those steps.

My issue is that each time I open a new terminal window and want Jekyll to rebuild the site with jekyll build, I get the error jekyll: command not found. The temporary solution is to re-run the following two commands from the tutorial then Jekyll works:

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile"

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Checking that .profile file I noticed it says 'This file is not read by bash, if ~/.bash_profile or ~/.bash_login exists'. I ran the first two commands again substituting .bash_profile for .profile and this didn't seem to have any effect.

[[ -s "$HOME/.bash_profile" ]] && source "$HOME/.bash_profile"

I still get the Jekyll error and my .bash_profile file exists but is completely empty.

Is there a more permanent fix or am I stuck running the first two commands every single time I open a terminal to rebuild a site with Jekyll?

Tom Brossman
  • 12,953
  • 11
  • 66
  • 134
  • I assume that `jekyll` add to `.profile` code, that add jekyll binaries to the `$PATH`. You should copy this part to `.bash_profile`. If you post here `.profile`, I will help you to understand it – c0rp Apr 03 '14 at 08:07
  • Also in tutorial you mentioned it is suggested to add this 2 line to your `~/.bash_profile`. Just do it – c0rp Apr 03 '14 at 08:10
  • just add `[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"` in your `.bashrc`. It should solve the issue. – sourav c. Apr 03 '14 at 09:02

2 Answers2

1

You can create alias for the above three commands.

alias jekyllb='[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" && [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" && jekyll build'

Hence forth, whenever you would run jekyllb all the three commands would be run sequentially.

Registered User
  • 9,521
  • 14
  • 53
  • 85
  • Thanks, this is clever but I would prefer to fix the problem rather than have to remember this command as a workaround. I'll forget about `jelyllrb`, read the official documantation, and be right back where I started. – Tom Brossman Apr 03 '14 at 08:46
  • @TomBrossman you can use something simpler like **Tom** or even **a** instead of **jekyllb** – Registered User Apr 03 '14 at 09:01
1

~/.bashrc will be called for interactive + non-loginshell

whereas ~/profile will be called for interactive + login shell

The recommended way is putting

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

in the ~/.profile itself but in .bash_profile put source "$HOME/.profile.

And the second way way would be to add

`[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" `

in your .bashrc.

Here is why the second way is not much recommended.

More on .bashrc,.profile and bash_profile.

Stormvirux
  • 4,446
  • 29
  • 35
  • @TomBrossman you should never source `.bashrc` inside from `.profile` as `.bashrc` itself sources `.profile`. It will create an infinite loop like situation. Anyway `Ctrl+C` will give you back the terminal prompt. – sourav c. Apr 03 '14 at 08:59
  • 1
    @TomBrossman Just go for the last one which is the one mostly used by most people – Stormvirux Apr 03 '14 at 09:12