【问题标题】:Shell script, directory is writable strange behaviorShell脚本,目录可写的奇怪行为
【发布时间】:2013-08-14 13:26:14
【问题描述】:

这是来自test 手册页的-w 选项描述:

   -w FILE
          FILE exists and write permission is granted

举个例子,胜过千言万语:

$ ls -ld /home/maxime/.gvfs
dr-x------ 2 maxime maxime 0 Aug  5 22:53 /home/maxime/.gvfs
$ [ -w /home/maxime/.gvfs ] && echo "is writable" 
is writable
$ touch /home/maxime/.gvfs/file
touch: cannot touch `/home/maxime/.gvfs/file': No such file or directory

如您所见,该目录不应该是可写的:只设置了r 和x 标志。 但是,test 说我可以在里面写……第一件奇怪的事。另一个是当我尝试在其中创建文件时会发生什么:No such file or directory。

顺便说一句,我正在以用户“maxime”的身份运行上述命令,并且我使用的是 Ubuntu 12.04 中的 dash。

好吧,我有点迷路了,有人解释一下吗?

【问题讨论】:

  • 除了test 解析为另一个二进制文件而不是/usr/bin/test,不知道。你可以试试test -w /home/maxime/.gvfs; echo $? 看看是1还是0?
  • 这里是:/usr/bin/test -w /home/maxime/.gvfs ; echo $?。输出:0

标签: shell ubuntu scripting dash-shell


【解决方案1】:

.gvfs是一个特殊的文件,实际上是gvfs-fuse-daemon创建的一个虚拟文件系统。你不应该直接使用它。

【讨论】:

  • 好的。事实上,在我的 shell 脚本中,我想在用户家中找到任何可写的目录。我应该为.gvfs 做一个“例外”吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多