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 之间进行选择,将文件切换为前者。
我有 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 之间进行选择,将文件切换为前者。