执行脚本和可执行程序时一直提示没有权限(Permission denied)

在银河麒麟的16.04版本上,运行自己编写的测试程序和脚本时,一直提示 没有权限(Permission denied)的问题。我尝试过切换到root权限,将待测试程序和脚本的权限赋予777后,仍然会提示 没有权限(Permission denied)的问题。
我也查看过当前系统的/etc/fstab文件,上面显示是正常的。请问,这是个什么问题啊???
20200213160201.png

可否发下脚本内容

就是简单的shell测试脚本。
#!/bin/sh
echo “hello kylin os!”

会不会是因为你的用户,你换成root执行下试试

切换root后试过了。也是一样的效果

楼主你少了个点 。。。应该是 . ./test.sh

???不是吧。我就在test.sh的当前目录下执行的呀。…/test.sh,这是要在上一层目录找到test.sh之后再执行啊,但我的上一层目录是没有test.sh这个脚本的啊

我刚刚测了下 . test.sh (.与test.sh中间有一个空格)这样是可以的。但是,执行我自己写的可执行文件时,还是不行。这是为什么啊???

这样试试

vi xx
#!/bin/bash
 echo "hello,kylin os!"
:wq
chmod +x xx
./xx

:‘(:’(:cry:
我试过了。bash和sh我都试过了。一样的不行。。。。

kwz@kwz:~/test$ ls
test.sh
kwz@kwz:~/test$ ll
总用量 12
drwxrwxr-x 2 kwz kwz 4096 2月 18 21:24 ./
drwxr-xr-x 39 kwz kwz 4096 2月 18 21:23 …/
-rwxrwxr-x 1 kwz kwz 33 2月 18 21:24 test.sh*
kwz@kwz:~/test$ . ./test.sh
hello kylin os!
kwz@kwz:~/test$

chmod a+x 脚本文件

嗯。这样是可以的。我也验证过。只是有点好奇 . 操作符可以这样执行脚本。我看了下,用 . 操作符,底层好像也是用bash来执行的脚本,但为什么我直接用 bash 来执行test.sh脚本却不行呢?

我已经将脚本文件的权限打开了,已经给到777了。还是不行的

由于你的贴图我无法看清楚,你是放在哪里,然后怎么执行的,判断大概你的执行路径不对,我发解析,
你直接复制我的代码,在桌面编辑后,放到系统的{bin}文件夹里,然后打开终端直接运行就可以,
不用./这样来运行直接输入名称回车,

这张图片是我的测试脚本的内容、所在位置,以及我所做的测试。我没有把测试脚本放到/bin文件夹下。因为在实际的使用中,我们不会把所有的脚本都放在/bin目录下。我们一般都会自己指定脚本文件的存放路径的。

看了你的终端输出,原来是你的执行不对,
你应该这样执行
pwd #确认你所在的位置
然后cd 进入你文件所在的位置

./t.sh #告诉在当前位置执行文件解析 # 无论是root权限用户还是权限都应该我这样,除了你把它扔进 /bin目录下,
而不是你那样来执行文件,你根本不明白自己在做什么?你更不明白linnux文件目录结构,

说实话哈,我是真的不是太了解linux的文件目录结构。我之前的所有操作都是在我的脚本和可执行文件所在目录下操作的。不是太理解为什么还需要再来cd 到文件所在的位置???这是什么原因啊?
我刚刚又试了一下,操作了一下cd,但是再操作的时候,还是会报之前的错误。我的操作有什么问题吗?我执行脚本的时候,一般会这么操作。
一、进入脚本所在的目录,然后直接使用命令:bash 脚本
二、在做任意的目录,然后使用命令:bash 脚本所在的完整路径(从根目录到脚本,如我写的测试脚本 /home/guest/temp/t.sh)
请问一下,我这些操作与linux的文件目录结构有什么关联啊?一直不是太了解底层的东西。望不吝赐教。谢谢,谢谢!万分感谢!

抱歉,还是没能明白你说的。我对linux的文件目录结构是真的不是太了解。还望能不吝赐教下。我试着将我的测试脚本放到了/bin目录下,但是测试的时候,还是一样的。
微信图片_20200220091411.png

说实话哈,我是真的不是太了解linux的文件目录结构。我之前的所有操作都是在我的脚本和可执行文件所在目录上去执行的。然后,我执行的时候,一般会有两种方式:
一、进入到脚本所在的目录,然后直接使用bash或sh,后面再加上脚本名。如: bash t.sh
二、使用bash或sh,后面会加上脚本的完整路径。如: bash /home/guest/temp/t.sh
一直以来我都是只会使用,不是太了解底层的东西。不好意思!能请你解释一下底层的逻辑吗?
另外,我刚刚也尝试了下,通过cd进入到文件所在的位置,但是执行出来的结果还是一样的。不知道是为什么?是我的操作有什么问题吗?

而我通过 . 操作符来操作的时候,发现脚本通过 . 操作符是可以正常显示的,但是可执行文件却是不行的。这个是什么原因啊?你能帮忙解释下吗?


微信图片_20200220141153.png