Node.js在Windows上的Git Bash shebang失败
Node.js on Windows Git Bash shebang failure
Windows Git Bash特定问题。。。
非常简单的脚本,它接受一些用户输入,并且不将其回显到输出。像node secret.js
一样调用时工作正常,但当像./secret.js
一样调用时行为奇怪,需要ctrl+c退出,并在键入时回显输出。
#!/usr/bin/env node
var prompt = require('prompt');
prompt.start();
prompt.colors = false;
prompt.message = '';
prompt.delimiter = '';
prompt.get([{
name: 'secret',
description: 'tell me your darkest secret: ',
hidden: true
}], function(err, result){
console.log('Hey guys! He said "' + result.secret.slice(0, 5) + '..." only kidding, I won''t tell.');
});
让脚本在包括gitbash在内的所有平台上运行的安全方法是什么?
更新:添加了env
结果,以防有用。。。
IEUser@ie8winxp MINGW32 ~/projects/issue (develop)
$ env
HOMEPATH='Documents and Settings'IEUser
MANPATH=/mingw32/share/man:/usr/local/man:/usr/share/man:/usr/man:/share/man:
APPDATA=C:'Documents and Settings'IEUser'Application Data
HOSTNAME=ie8winxp
SHELL=/usr/bin/bash
TERM=xterm
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
WINDIR=C:'WINDOWS
TMPDIR=/tmp
OLDPWD=/c/Documents and Settings/IEUser/projects
USERDOMAIN=IE8WINXP
OS=Windows_NT
ALLUSERSPROFILE=C:'Documents and Settings'All Users
TEMP=/tmp
COMMONPROGRAMFILES=C:'Program Files'Common Files
USERNAME=IEUser
PROCESSOR_LEVEL=6
PATH=C:'Documents and Settings'IEUser'projects'issuemd'node_modules'.bin:C:'Documents and Settings'IEUser'projects'issue'node_modules'.bin:C:'Documents and Settings'IEUser'projects'node_modules'.bin:/c/Documents and Settings/IEUser/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Documents and Settings/IEUser/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/Program Files/nodejs:/c/Documents and Settings/IEUser/Application Data/npm:/usr/bin/vendor_perl:/usr/bin/core_perl
EXEPATH=C:'Program Files'Git
FP_NO_HOST_CHECK=NO
PWD=/c/Documents and Settings/IEUser/projects/issue
SYSTEMDRIVE=C:
LANG=en_US.UTF-8
USERPROFILE=C:'Documents and Settings'IEUser
CLIENTNAME=Console
PS1='['033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}'007']'n'['033[32m']'u@'h '['033[35m']$MSYSTEM '['033[33m']'w'['033[36m']`__git_ps1`'['033[0m']'n$
LOGONSERVER=''IE8WINXP
PROCESSOR_ARCHITECTURE=x86
SSH_ASKPASS=/mingw32/libexec/git-core/git-gui--askpass
SHLVL=1
HOME=/c/Documents and Settings/IEUser
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PLINK_PROTOCOL=ssh
HOMEDRIVE=C:
MSYSTEM=MINGW32
COMSPEC=C:'WINDOWS'system32'cmd.exe
TMP=/tmp
SYSTEMROOT=C:'WINDOWS
PROCESSOR_REVISION=170a
PKG_CONFIG_PATH=/mingw32/lib/pkgconfig:/mingw32/share/pkgconfig
ACLOCAL_PATH=/mingw32/share/aclocal:/usr/share/aclocal
INFOPATH=/usr/local/info:/usr/share/info:/usr/info:/share/info:
PROGRAMFILES=C:'Program Files
DISPLAY=needs-to-be-defined
NUMBER_OF_PROCESSORS=1
SESSIONNAME=Console
COMPUTERNAME=IE8WINXP
_=/usr/bin/env
发现节点不支持cygwin(我认为git-bash也是)。
看来gitbash不是一个真正的tty。
看来有人把winpty和gitbash捆绑在一起做了些什么。
解决方案
在git bash
中,运行winpty bash
,然后其余部分应按预期工作。
相关文章:
- 是否可以从 Firefox 运行 bash 脚本?(使用 Firefox 附加组件 SDK)
- Node.js bash:/usr/local/bin/Node:权限被拒绝
- 当我在nodechild_process中使用grep时,与在bash中使用结果不同
- 如何在bash中的另一个命令中使用一个命令的结果
- Bash脚本和Javascript的标准哈希算法
- 可从网页调用的Bash脚本
- 权限被拒绝,forever.js为bash脚本
- 在 html 页面上显示 bash 脚本输出
- 设置应用程序.js使用 git bash 错误
- 使用 Javascript 中的参数执行 bash 脚本
- Bash 和 MongoDB:Eval 中的空格不起作用
- 为什么Visual Studio Node.js项目使用shebang/bash脚本来启动服务器
- 使用 Bash 在 JScript 中更快地搜索
- 节点 bash 权限被拒绝
- 在 bash 上替换 sed 的问题
- 在 bash 脚本中使用 cURL 的 Javascript 登录
- 从 javascript 问题启动 bash 脚本
- 使用 JavaScript 读取 bash 输出
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- Node.js在Windows上的Git Bash shebang失败