Shell脚本无法在Git-Bash for Windows上正常运行

时间:2015-09-14 18:30:38

标签: git mingw git-bash mingw-w64

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

我想要的只是创建一个.sh,它会为我提交/推动我的工作。我编写了脚本,当我尝试运行它时,我得到一个错误:

“#!/ bin / sh:没有这样的文件或目录”

正如你所看到的,我为我的git-bash和我的git-sh设置了PATH(也是为了我的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:line 1:#!/ bin / sh.exe:没有这样的文件或目录

问题似乎是在我的shellcript上创建变量时。有没有人知道可能导致这个问题的原因?

提前致谢!

2 个答案:

答案 0 :(得分:2)

  

./ script.sh:第1行:#!/ bin / sh.exe:没有这样的文件或目录

FWIW该错误通常是由称为UTF8-BOM的可憎性引起的。

字符“零宽度不间断空格”在UTF16中用作“字节顺序标记”。几个Windows编辑器(记事本IIRC)也将此不可见(且无用)的字符放在了以UTF8编码的文件的开头。

如果具有“ Notepad ++”,则可以使用编码菜单项在UTF8和UTF8-BOM之间进行选择,然后将文件切换为前者。

答案 1 :(得分:0)

你打算怎么跑?我需要在命令提示符下执行的操作是将文件拖到MINGW64窗口中,以便显示文件路径和名称,按回车键,然后运行。

但是,如果我在命令行中使用sh在文件名之前,我得到了#34;#!/ bin / sh.exe:没有这样的文件或目录"或者你提到的类似。

那是:

$ [文件路径]

作品。

$ sh [文件路径]

没有按'吨