How can I solve this error I get when I commit changes on an SVN repository from the Ubuntu terminal?

Posted on

Problem :

When I commit changes on a SVN repository, I always run into the following problem in the terminal in Ubuntu:

Error reading /home/ssylee/.nano_history: Permission denied

Any ideas how to solve it?

Solution :

This is usually caused by running sudo nano [file]. This runs the nano process as root, but leaves $HOME set to the regular user’s home directory, so if nano creates any files (including the .nano_history file), it will be owned by root and placed in your home directory.

You can verify this by running:

ls -l /home/ssylee/.nano_history

If ls reports that the file is owned by root, then you can be reasonably sure this was the cause.
If it is, then the situation can be repaired by running:

sudo chown $USER: ~/.nano_history

or to spell out that command:

sudo chown ssylee: /home/ssylee/.nano_history

A better habit to get into is to use sudoedit or sudo -e instead of sudo nano. This runs the $EDITOR program on a copy of the file being edited, and then atomically replaces the original file when the editor exits (which is very useful when editing system files).

By default, this may launch vi, but you can fix this temporarily by invoking it like so:

EDITOR=nano sudoedit [filename]

You can permanently configure $EDITOR in your .bashrc, or by placing

EDITOR=nano

in /etc/environment.

The easiest is to remove the file in question. The next easiest is to make it readable with chmod/chown. The next easiest is to use a different editor.

I always use this:
sudo chown -R username:username /home/username

It solves the problem when the permissions are messed up.

I would rather do a

ls -la /home/ssylee/.nano_history

first, to see the current permissions.
This might help you find out why they went wrong in the first place. If ssylee is the owner of this file, maybe you have a broken default umask?

Leave a Reply

Your email address will not be published. Required fields are marked *