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

sta*_*tor 12 linux terminal svn

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

Error reading /home/ssylee/.nano_history: Permission denied
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决它?

Sup*_*ire 28

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

您可以通过运行来验证这一点:

ls -l /home/ssylee/.nano_history
Run Code Online (Sandbox Code Playgroud)

如果ls报告该文件归 拥有root,那么您可以合理地确定这就是原因。如果是,那么可以通过运行来修复这种情况:

sudo chown $USER: ~/.nano_history
Run Code Online (Sandbox Code Playgroud)

或拼出该命令:

sudo chown ssylee: /home/ssylee/.nano_history
Run Code Online (Sandbox Code Playgroud)

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

默认情况下,这可能会启动vi,但您可以通过像这样调用它来临时修复此问题:

EDITOR=nano sudoedit [filename]
Run Code Online (Sandbox Code Playgroud)

您可以$EDITOR在您的 中永久配置.bashrc,或通过放置

EDITOR=nano
Run Code Online (Sandbox Code Playgroud)

/etc/environment

  • `chown $USER:` 是一种更短的应用主组的方法。 (4认同)

Ign*_*ams 1

最简单的方法是删除有问题的文件。chmod第二个最简单的方法是使用/使其可读chown。第二个最简单的方法是使用不同的编辑器。