制表符扩展和“./”bash shell

时间:2012-11-05 01:21:12

标签: bash scripting environment ubuntu-12.04 kubuntu

也许这里的某个人能够帮助我。在两台机器上安装了Ubuntu 12.04 LTS(kubuntu)。 .bashrc.bash_profile文件是相同的,因为每台计算机上的文件结构是相同的。

在计算机1上:我在终端窗口中使用简单的./scriptname.sh

运行bash脚本

在计算机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文件中可能存在错误。但不知道在哪里看。

1 个答案:

答案 0 :(得分:1)

我建议尝试ls -al检查文件和目录的权限。另外,请尝试getfacl file.sh,因为有时会有ACL权限覆盖正常的Unix权限位。

然后我会尝试head -n 1 file.sh | xxd,查看第一行,并确保shebang正确作为文件的前两个字符。有时,隐藏字符(如Unicode BOM)可能导致无法正确解释。

然后我会检查shell本身的权限。 ls -l /bin/bashgetfacl /bin/bash。我还会检查其他口译员是否会发生这种情况;你可以使用#!/bin/sh作为脚本吗? #!/bin/python(或者Perl,或Ruby,或类似的东西)?区分这种情况是仅发生在/bin/bash还是发生在其他外壳上会有所帮助。

另外,请查看ls /proc/sys/fs/binfmt_misc以查看是否配置了可能会干扰shell脚本正常解释的二进制格式。

尝试从其他帐户进行测试(如果可以)。问题是您的帐户所特有的吗?我也会尝试重新启动,以防出现一些导致问题的瞬态损坏(如果可以的话)。

(答案最初是一系列评论)