Bash 在不键入扩展名的情况下运行脚本

Bash 在不键入扩展名的情况下运行脚本,bash,git-bash,Bash,Git Bash,我在windows上使用git bash 有没有办法让它在不键入文件扩展名的情况下运行windows批处理(.cmd) 关于*.sh文件也有同样的问题。我更喜欢将bash脚本放在.sh中,以便在资源管理器中更容易区分它们 不欢迎使用别名或不带扩展名的代理脚本 希望有一些极客的方法可以做到这一点。因此,仍然在寻找答案…您可以使用任何风格的bash(cmder、git-bash、ms-bash、cygwin、gnu实用程序…),它允许您使用任何unix命令,而无需扩展,即使存储为.exe 注意CR/

我在windows上使用git bash

有没有办法让它在不键入文件扩展名的情况下运行windows批处理(.cmd)

关于*.sh文件也有同样的问题。我更喜欢将bash脚本放在.sh中,以便在资源管理器中更容易区分它们

不欢迎使用别名或不带扩展名的代理脚本


希望有一些极客的方法可以做到这一点。因此,仍然在寻找答案…

您可以使用任何风格的bash(cmder、git-bash、ms-bash、cygwin、gnu实用程序…),它允许您使用任何unix命令,而无需扩展,即使存储为
.exe

注意CR/LF,并在每次创建shell脚本时使用dos2unix,以防止对行结尾的错误解释

您将无法使用不带扩展名的
.sh
文件…但要为每个脚本创建别名:

$alias myscript=“/usr/local/bin/myscript.sh”


将它们放在~/.bashrc

中首先介绍一下有关文件扩展名的内容:

文件扩展名是指定为文件后缀的标识符 计算机文件的名称。扩展名表示的是 文件内容或其预期用途。文件扩展名通常是 从文件名中用句号(句点)分隔,但在某些情况下 系统之间用空格隔开

某些文件系统将文件扩展名作为 文件系统本身,可能会限制文件的长度和格式 扩展名,而其他人则将文件扩展名作为 没有特殊区别的文件名

类UNIX操作系统(与DOS/Windows相反)的文件系统不会将 文件名其余部分的扩展元数据。点字符 只是主文件名中的另一个字符,文件名可以有 多个扩展,通常表示嵌套转换

关于shell脚本:

因此,在Unix中,文件扩展名基本上不重要/不是必需的,因此可以直接忽略它们。如果出于任何原因您想要保留它们(我相信您应该这样做),那么您可以为它们定义一个别名。(请参阅)

您还必须记住Unix和Windows之间不同的
EOL
字符(
'\n'
vs
'\r\n'


关于windows批处理,您不能在类似Unix的环境中直接运行它们,因此无法从git bash同时运行它们,除非您使用类似于
GH4W
()的工具或使用
git cmd.bat
()

也许我已经找到了一个需要额外编码的解决方案。您可以尝试重写代码,让它通过添加“.sh”或“.cmd”来执行命令,而不是在键入不存在的命令时侮辱用户

吉特古布:


也要搜索。这在大多数Linux系统上都可用,可能对git bash可用,也可能不可用。

显然,我不想把所有的*.sh和*.cmd都放在别名中。这太麻烦和毫无意义了。因此,我的问题的答案是否定的。我需要在Windows环境上进行扩展。它们的用途不能低估。使用省略每个脚本的扩展名的别名看起来毫无意义。因此,这个问题的答案是否定的。@Allan,给新手的建议:不要给出建议,一定要给出解决方案。目前还没有有用的答案。