Linux 如何将text/plain转换为text/x.shell脚本
我正在将一个从windows计算机创建的.sh文件发送到linux,以便在那里运行它。问题是,我不断收到一个错误,称为bad解释器。但是,当我在linux机器上编写shell脚本时,它运行时没有问题,即使它的代码与从windows机器发送的代码相同。在我的调查之后,我发现windows machine.sh脚本是一个text/plain文件(使用file-bi),而linux机器上的另一个脚本是text/x.shell脚本。有没有办法将text/plain转换为text/x.shell脚本?多谢各位 以下是脚本:Linux 如何将text/plain转换为text/x.shell脚本,linux,windows,shell,encoding,scripting,Linux,Windows,Shell,Encoding,Scripting,我正在将一个从windows计算机创建的.sh文件发送到linux,以便在那里运行它。问题是,我不断收到一个错误,称为bad解释器。但是,当我在linux机器上编写shell脚本时,它运行时没有问题,即使它的代码与从windows机器发送的代码相同。在我的调查之后,我发现windows machine.sh脚本是一个text/plain文件(使用file-bi),而linux机器上的另一个脚本是text/x.shell脚本。有没有办法将text/plain转换为text/x.shell脚本?多谢
#!/bin/bash
date
sudo apt-get update
我尝试了一个解决方案,在一个只包含
#!/bin/bash
然后windows计算机只发送一个包含以下测试命令的文件:
date
hostname
然后,我将windows框中的文件附加到linux框中
cat windows.sh >> linux.sh
如果我运行linux.sh,它就不起作用了。它说错误如下:
./linuxh.sh: line 2 $'date\r':command not found
./linuxh.sh: line 2 $'hostname\r':command not found
但是,如果我打开Linux.sh,然后不做任何操作就再次保存它。它有效我在下面总结了您需要采取的步骤,以便其他用户可以轻松看到需要做什么: 首先,您需要检查脚本在第一行的“#!”之后是否有到解释器的正确路径。这可能是:
#!/bin/bash
或
您可以通过键入以下内容找到正确的选项:
which bash
在你的Linux机器上
第二,您需要确保在Linux框运行脚本之前,删除行末尾的任何Windows回车符(或“^M”)。您可以通过以下方式执行此操作:
dos2unix yourscript
仅供参考,在Linux中,您可以通过以下方式轻松看到奇怪的字符,如制表符、换行符或回车符:
cat -vet yourfile
或
第三,您需要确保您的脚本在Linux上是可执行的,使用chmod如下:
chmod +x yourscript
最后,完成所有这些操作后,您需要将脚本所在的目录添加到PATH变量中(并将其导出),或者如果脚本位于当前目录中,则按如下方式提供脚本的完整路径:
./yourscript
或者像这样,如果它位于其他地方
/some/directory/some/where/yourscript
我怀疑第一行到你的外壳的路径是错误的。给我们看剧本怎么样?我说的是“请给我们看剧本”,而不是“剧本是在哪里制作的?”…@MarkSetchell对于那个误会很抱歉。我用sript编辑了我的文章。请在脚本的每一行的开头加上4个空格,这样它的格式就正确了。第一行可能是“#!/bin/bash”或“#!/usr/bin/bash”
./yourscript
/some/directory/some/where/yourscript