我有一个bash脚本放在我登录的用户主目录下的目录中,该目录读取一个文件(也放在相同的用户主目录中,相对于bash脚本的路径更深)来保存一些变量以便进一步处理在脚本中(这里简化为通用性):
#!/bin/bash
sEnv=$(./config/myfile.conf)
echo $sEnv
使用
从bash运行此文件时. run-me.sh
脚本因此错误而失败:
-bash: ./config/myfile.conf: Permission denied
文件的权限是: -rw-RW-R -
我不确定问题是什么(我是一个失败的noob Linux / ubuntu用户)..
希望能得到一些帮助。
此致
的Henrik
答案 0 :(得分:0)
$(command)
执行command
,因此command
必须是可执行的。尝试
$ chmod 775 config/myfile.conf
$ . run-me.sh
答案 1 :(得分:0)
$(command)
实际上试图执行内部的任何内容(即command
)。
此处,文件必须本身为:
x
权限(例如chmod 755 filename
)答案 2 :(得分:0)
制作./config/myfile.conf
可执行文件:
chmod u+x ./config/myfile.conf
首先检查./config/myfile.conf
内部的内容是一个好主意,对常规conf
文件的读取权限通常就足够了。检查符合您要求的内容并相应地设置权限,不要做任何不必要的事情。
答案 3 :(得分:0)
要将文件读入变量,您需要$(<file)
:
#!/bin/bash
sEnv=$(<./config/myfile.conf)
echo $sEnv
但是,如果配置文件是以shell样式设置(环境)变量,您可能更愿意获取文件(从而将内容复制到脚本中):
. ./config/myfile.conf
#or alternatively
source ./config/myfile.conf