Shell 运行 在 Git-Bash 上 Windows 的脚本不正确

Shell Script not running properly on Git-Bash for Windows

我有 git for windows 2.5.2(64 位版本),下载自:https://git-scm.com/download/win

我只想创建一个 .sh 来 commit/push 我的工作。我写了脚本,当我尝试 运行 它时,我得到一个错误,如:

"#!/bin/sh: 没有那个文件或目录"

如您所见,我为我的 git-bash 和我的 git-sh(也为我的 sh.exe 和我的 bash.exe)

路径-> "C:\Program Files\Git\bin\;C:\Program Files\Git\mingw64\;"

我也有我的~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

我的 ~/.profile:

#!/bin/sh.exe
#
# Get the aliases and functions
#

if [ -f ${HOME}/.bashrc ]
then
  . ${HOME}/.bashrc
fi

  export CVS_RSH="ssh"
  export EDITOR="/usr/bin/vim"
  export HISTSIZE="500"
  export PATH="${HOME}/bin:${PATH}"

我的简单 script.sh:

#!/bin/sh.exe

P_J="Le/Prjt/swks/games"
GITLAB_USER='myuser'
GITLAB_PASSWORD='mypass'
P_JG='G Select'
NAME_OF_REP='g-select'

cd $P_J || EXIT
cd "$P_JG" || EXIT
#git add -A
#git commit -m "$(date)"
#git push https://$GITLAB_USER:$GITLAB_PASSWORD@gitlab.com/$GITLAB_USER/$NAME_OF_REP.git

来自我的 Git-Bash,这是一个 "echo $PATH":

$ echo $PATH /c/Users/UserP/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/ProgramData/Oracle/Java/javapath:/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Java/jre1.8.0_51/bin:/c/Program Files (x86)/Android/android-sdk/platform-tools:/bin:/mingw64:/usr/bin/vendor_perl:/usr/bin/core_perl

正如我所说,当打开 git-bash 和 运行 宁我的简单 .sh 我得到这个错误:

./script.sh:第 1 行:#!/bin/sh.exe:没有那个文件或目录

问题似乎出在我的 shellscript 上创建变量时。有谁知道可能导致此问题的原因吗?

提前致谢!

你想运行怎么样?我需要在命令提示符下做的就是将文件拖到 MINGW64 window 中,这样文件路径和名称就会出现,按回车键,然后它 运行s.

但是,如果我在命令行中的文件名前面加上 sh,我会得到“#!/bin/sh.exe:没有这样的文件或目录”或您提到的类似内容。

即:

$[文件路径]

有效。

$ sh [文件路径]

没有。

./script.sh: line 1: #!/bin/sh.exe: No such file or directory

FWIW 此错误通常是由称为 UTF8-BOM 的可憎内容引起的。

字符"Zero width no-break space"在UTF16中用作"Byte order mark"。几个 windows 编辑器(记事本 IIRC)也将这个不可见(且无用)的字符放在以 UTF8 编码的文件的开头。

如果您有 "Notepad++" 编码菜单项,您可以在 UTF8 和 UTF8-BOM 之间进行选择,将文件切换为前者。