Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rbenv: Permission Denied

Tags:

ruby

rbenv

I was following along with Ryan's RailsCast Episode 339. I had installed rbenv and could run ruby -v. I exited my session, and when I tried to come back in (via su deployer from root, I got this error

/home/deployer/.rbenv/bin/rbenv: line 20: cd: /root: Permission denied

Here is the rbenv file:

#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x

resolve_link() {
  $(type -p greadlink readlink | head -1) "$1"
}

abs_dirname() {
  local cwd="$(pwd)"
  local path="$1"

  while [ -n "$path" ]; do
    cd "${path%/*}"
    local name="${path##*/}"
    path="$(resolve_link "$name" || true)"
  done

  pwd
  cd "$cwd"
}

if [ -z "${RBENV_ROOT}" ]; then
  RBENV_ROOT="${HOME}/.rbenv"
else
  RBENV_ROOT="${RBENV_ROOT%/}"
fi
export RBENV_ROOT

if [ -z "${RBENV_DIR}" ]; then
  RBENV_DIR="$(pwd)"
else
  cd "$RBENV_DIR" 2>/dev/null || {
    echo "rbenv: cannot change working directory to \`$RBENV_DIR'"
    exit 1
  } >&2
  RBENV_DIR="$(pwd)"
  cd "$OLDPWD"
fi
export RBENV_DIR


shopt -s nullglob

bin_path="$(abs_dirname "$0")"
for plugin_bin in "${RBENV_ROOT}/plugins/"*/bin; do
  bin_path="${bin_path}:${plugin_bin}"
done
export PATH="${bin_path}:${PATH}"

hook_path="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks"
for plugin_hook in "${RBENV_ROOT}/plugins/"*/etc/rbenv.d; do
  hook_path="${hook_path}:${plugin_hook}"
done
export RBENV_HOOK_PATH="$hook_path"

shopt -u nullglob


command="$1"
case "$command" in
"" | "-h" | "--help" )
  echo -e "rbenv 0.3.0\n$(rbenv-help)" >&2
  ;;
* )
  command_path="$(command -v "rbenv-$command" || true)"
  if [ -z "$command_path" ]; then
    echo "rbenv: no such command \`$command'" >&2
    exit 1
  fi

  shift 1
  exec "$command_path" "$@"
  ;;
esac

Line 20 is cd "$cwd"

Any ideas on why I get this error when I try to come back into a session?

like image 843
Tyler DeWitt Avatar asked Mar 30 '12 22:03

Tyler DeWitt


People also ask

What does Rbenv mean?

rbenv provides support for specifying application-specific versions of Ruby, lets you change the global Ruby for each user, and allows you to use an environment variable to override the Ruby version. In this tutorial, you will use rbenv to install and set up Ruby on Rails on your local macOS machine.

What is Rbenv command?

rbenv is included in all installations of Bitnami Ruby stack that use system packages. It is a command-line tool which allows you to easily install, manage, and work with multiple Ruby environments. Every installed Ruby interpreter using rbenv is isolated in its own directory with its libraries and gems.

How do I change Ruby from Rbenv to Mac?

rbenv global Sets the global version of Ruby to be used in all shells by writing the version name to the ~/.rbenv/version file. This version can be overridden by an application-specific .ruby-version file, or by setting the RBENV_VERSION environment variable.


1 Answers

It appears that you're in /root when you switch user to "deployer". Try making sure you're in a directory that "deployer" has access to.

Credit goes to d11wtq

like image 196
Tyler DeWitt Avatar answered Oct 15 '22 13:10

Tyler DeWitt