当我从Ubuntu终端对SVN存储库提交更改时,如何解决此错误?


12

当我在SVN存储库上提交更改时,我总是在Ubuntu的终端中遇到以下问题:

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

有什么想法如何解决吗?


如您所见,关于如何解决它有很多想法,但这在某种程度上取决于您为什么首先会真正遇到问题。
David Z

要重现:(sudo rm -f ~/.nano_history删除文件),sudo nano somefile(以根用户身份编辑某些文件),^K sometext(搜索某些文本),^X(退出),nano somefile(随身编辑某些文件)。您会看到错误读取/home/ssylee/.nano_history:权限被拒绝。nano创建.nano_history来存储您的搜索历史。如果文件是在sudo nano会话期间创建的,则该文件属于根目录。
伊恩·塞缪尔·麦克莱恩

Answers:


28

这通常是由运行引起的sudo nano [file]。这将以root身份运行nano进程,但将其$HOME设置为普通用户的主目录,因此,如果nano创建任何文件(包括.nano_history文件),它将由root拥有并放置在您的主目录中。

您可以通过运行以下命令进行验证:

ls -l /home/ssylee/.nano_history

如果ls报告文件属于root,则可以合理地确定这是原因。如果是这样,那么可以通过运行以下命令来修复该情况:

sudo chown $USER: ~/.nano_history

或阐明该命令:

sudo chown ssylee: /home/ssylee/.nano_history

更好的习惯是使用sudoeditsudo -e代替sudo nano。这将在$EDITOR要编辑的文件的副本上运行程序,然后在编辑器退出时自动替换原始文件(这在编辑系统文件时非常有用)。

默认情况下,它可能会启动vi,但是您可以通过调用它来临时解决此问题,如下所示:

EDITOR=nano sudoedit [filename]

您可以永久配置$EDITOR在您的.bashrc,或者将

EDITOR=nano

在中/etc/environment


4
chown $USER:是应用主要组的一种较短的方法。
东武

1
@东武,谢谢!我不知道那个把戏。我已经更新了答案以反映这一点。
Suppressingfire 2010年


1

我总是用这个:
sudo chown -R username:username /home/username

解决了权限混乱的问题。


1

我宁愿做一个

ls -la /home/ssylee/.nano_history

首先,查看当前权限。这可以帮助您首先找出它们为什么出错。如果ssylee是此文件的所有者,则可能是默认umask损坏了吗?


1

只需更改.nano_history文件的权限,如下所示:

sudo chown youruser:yourgroup /home/<username>/.nano_history

完成!消息不见了!=)真的很简单。


0

该修复程序需要编辑nano配置文件/ etc / nanorc并删除/home//.nano_history。

首先使用以下命令注释掉nanorc的set historylog参数:sudo nano / etc / nanorc

#set historylog

这将禁用用于保存和读取搜索/替换字符串的〜/ .nano_history文件。

这仍然会将.nano_history文件保留在用户目录中。删除该文件,如下所示:

sudo rm .nano_history

而已!

资料来源


在纳米这将完全禁用历史,可能不是用户希望做..
MXX
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.