也许这里的某个人能够帮助我。在两台机器上安装了Ubuntu 12.04 LTS(kubuntu)。 .bashrc
和.bash_profile
文件是相同的,因为每台计算机上的文件结构是相同的。
在计算机1上:我在终端窗口中使用简单的./scriptname.sh
在计算机2上:我不能这样做,必须使用:sh scriptname.sh
我也无法使用./
和制表符完成脚本文件名。
所有可执行位都设置正确,所有文件和文件夹都具有正确的权限。在脚本的标题中正确设置了shebang。
为什么会发生这种情况的任何想法?
如果我尝试使用./file_motion_grab.sh
执行脚本:
bash: ./file_motion_grab.sh: Permission denied
当我尝试ls -l
时,我得到:
-rwxrwxrwx 1 adelie adelie 351 Nov 4 20:32 file_motion_grab.sh
getfacl
的输出是:
# file: file_motion_grab.sh
# owner: adelie
# group: adelie
user::rwx
group::rwx
other::rwx
更通用 - 必须使用以下命令调用第二台计算机上的任何新脚本:sh scriptname.sh .bash文件中可能存在错误。但不知道在哪里看。
答案 0 :(得分:1)
我建议尝试ls -al
检查文件和目录的权限。另外,请尝试getfacl file.sh
,因为有时会有ACL权限覆盖正常的Unix权限位。
然后我会尝试head -n 1 file.sh | xxd
,查看第一行,并确保shebang正确作为文件的前两个字符。有时,隐藏字符(如Unicode BOM)可能导致无法正确解释。
然后我会检查shell本身的权限。 ls -l /bin/bash
和getfacl /bin/bash
。我还会检查其他口译员是否会发生这种情况;你可以使用#!/bin/sh
作为脚本吗? #!/bin/python
(或者Perl,或Ruby,或类似的东西)?区分这种情况是仅发生在/bin/bash
还是发生在其他外壳上会有所帮助。
另外,请查看ls /proc/sys/fs/binfmt_misc
以查看是否配置了可能会干扰shell脚本正常解释的二进制格式。
尝试从其他帐户进行测试(如果可以)。问题是您的帐户所特有的吗?我也会尝试重新启动,以防出现一些导致问题的瞬态损坏(如果可以的话)。
(答案最初是一系列评论)