ubuntu 14.04 bash 使用 $() 将文件读入变量的脚本权限错误

ubuntu 14.04 bash script permission error reading file into variable with $()

我有一个 bash 脚本放置在我登录用户主目录下的一个目录中,它读取一个文件(也放置在相同的用户主目录中,在相对于 bash 脚本)保存一些变量以在脚本中进行进一步处理(为了通用性在此处进行了简化):

#!/bin/bash
sEnv=$(./config/myfile.conf)
echo $sEnv

当 运行 此文件来自 bash 和

. run-me.sh

脚本失败并出现此错误:

-bash: ./config/myfile.conf: Permission denied

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

我不确定问题是什么(我是一个失败的菜鸟 Linux / ubuntu 用户)..

希望得到一些帮助。

此致,

亨里克

$(command)执行command,所以command必须是可执行的。尝试

$ chmod 775 config/myfile.conf
$ . run-me.sh

$(command) 实际上试图执行里面的任何东西(即 command)。

这里,文件必须本身是:

  • 可执行:必须有x权限(如chmod 755 filename
  • 一个程序:内容应该是代码,可以是源代码或 object/binary 形式

使 ./config/myfile.conf 可执行:

chmod u+x ./config/myfile.conf

首先检查 ./config/myfile.conf 中的内容也是一个好主意,对常规 conf 文件的读取权限通常就足够了。检查哪些符合您的要求并相应地设置权限,不要做任何不必要的事情。

要将文件读入变量,您需要$(<file):

#!/bin/bash
sEnv=$(<./config/myfile.conf)
echo $sEnv

但是,如果配置文件以 shell 样式设置(环境)变量,您可能更喜欢源文件(从而将内容复制到您的脚本):

. ./config/myfile.conf
#or alternatively
source ./config/myfile.conf