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
我有一个 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