2010-10-01 80 views
6

我最近决定尝试学习一些bash脚本,并且作为一个有趣的练习,我决定创建一个脚本来为我打开一个每日文件,跑。Bash:尝试打开文件时的权限被拒绝

它工作得很好,直到我退出并返回到系统后,当我收到一个错误

/usr/local/bin/notes: line 45: /home/MY_USERNAME/notes/2010-10-01:Permission denied

Code

我可能是错的,但这个肯定不会显得像一些不需要额外权限的东西,是吗?

编辑器设置为nano

文件的权限-rw-rw-r--

脚本的权限是-rwxr-xr-x

+1

什么是您的$ EDITOR设置?文件的权限是什么样的?此外,最好在问题本身中包含代码(在代码块中),以便问题归档得更好,并且一旦pastebin消失就不会变得毫无意义。 – zigdon 2010-10-01 20:32:25

+0

**所有**都需要权限。没有“额外”权限。您必须执行'ls -l'或'ls -ld'来查看文件的权限。 – 2010-10-01 20:32:27

+0

您应该更新以包含问题完整性的代码。 Pastbin ID不再有效。 – Chris 2012-05-16 03:20:01

回答

6

我的猜测是,在

$EDITOR $DAILY_FILENAME 

$EDITOR为空,所以它试图执行$DAILY_FILENAME这不是可执行文件。可能在你测试的时候,你手动设置了EDITOR,但没有将它添加到你的.bashrc(或其他)文件中。使用-x选项来证明它。

+0

是的,我想我没有永久设置编辑器变量,我只设置了该会话。谢谢 – Michi 2010-10-01 20:49:48

7

检查与

ls -l /path/to/your/file 

对文件的权限,你应该看到类似

-rw-r--r-- 

r表示可读,w可写,x可执行。

第一套适合您的用户,第二套三套适用于您的团队,第三套适用于您的用户。

所以在我的例子中,我所显示的文件是读/写的,只读的是我的组和其他任何用户。

使用chmod命令更改权限。

chmod 744 file 

将使您的文件读取/写入/执行,并只为用户/世界读取。

0

如果我不得不猜测,我会建议$EDITOR环境变量由于某种原因未定义。它看起来像你的脚本试图执行笔记文件 - 因为这是不可执行的,你会得到无益的错误信息。

相关问题