On Ubuntu 14.04, I am getting the error "The value for the SHELL variable was not found the /etc/shells file" when running pkexec to run a script.

Most likely this error started after I removed the fish shell, that was set as my default shell.

The content of /etc/shells is:

# /etc/shells: valid login shells

How may I fix this?

1 Answer 1


The problem is this one: pkexec is accessing $SHELL to determine which shell to use to evaluate the remainder of the command; since you uninstalled fish but didn't do anything else, $SHELL still contains /usr/bin/fish, but pkexec doesn't deem /usr/bin/fish as a valid shell, since /usr/bin/fish has been removed from /etc/shells.

You need to do these two things:

  1. Set a new shell for your user, so that the next time the environment is load $SHELL will contain a path to a valid shell. E.g. to set Bash as the new shell for your user (replace user with your user's username):

    sudo chsh -s /bin/bash user
  2. Log out / log in to reload the environment so that $SHELL contains the path to the new shell for your user.

  • This didn't work for me. Without sudo, I received: "You may not change the shell for 'name'." With sudo no error but after loging back in, same pkexec error.
    – J. Doe
    Jan 5, 2016 at 20:28
  • 1
    @J.Doe Right. sudo chsh -s /bin/bash changes the shell for root. Do sudo chsh -s /bin/bash user, where user is your username instead.
    – kos
    Jan 5, 2016 at 20:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .