我目前正在使用服务脚本在Windows 7上使用Node.js提供目录.它在MSYS shell中运行良好或使用sh,因为我已将node.exe和服务脚本放在我的〜/ bin中(这是在我的PATH上),只输入"serve"就可以了,因为它的Shebang(#!)指令告诉shell用节点运行它.
但是,Windows命令提示符似乎不支持没有*.bat或*.exe扩展名的普通文件,也不支持shebang指令.是否有任何注册表项或其他黑客可以强制这种行为从内置cmd.exe?
我知道我可以写一个简单的批处理文件来运行它与节点,但我想知道它是否可以在内置的fasion中完成所以我不必为这样的每个脚本编写脚本?
更新:实际上,我在想,是否有可能为所有'未找到的文件'等编写一个默认处理程序,我可以自动尝试在其中执行sh -c?
谢谢.
在ruby程序开始时编写以下命令有什么用?
#!/usr/local/bin/ruby -w
Run Code Online (Sandbox Code Playgroud)
它是特定于OS的命令吗?它对窗户上的红宝石有效吗?如果没有,那么windows中的等效命令是什么?
我有一个我已定义的awk脚本:
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
Run Code Online (Sandbox Code Playgroud)
我已经保存为columns与chmod +x倒是它.我想调用它,这样start和end它横越在一个文件中定义.我以为这应该工作:
cat some_file | columns -v start=2
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.救命!
我正在尝试执行由zc.buildout自动生成的python脚本,所以我无法控制它们.我的问题是shebang行(#!)对于bash(80个字符限制)或直接执行(某些Linux内核常量我不知道)来说太长了.
这是一个示例脚本,可帮助您重现我的问题:
#!/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././bin/bash
echo Hola!
Run Code Online (Sandbox Code Playgroud)
如何将bash或内核配置为允许更大的shebang线?
我在添加shebang#时遇到了一些问题!在RedHat linux上使用我的PHP脚本.我添加了shebang的一小段测试代码(我也尝试了不同的变体),但每次尝试运行脚本时都会收到以下错误消息.
错误消息:
-bash: script.php: command not found
Run Code Online (Sandbox Code Playgroud)
测试脚本:
#!/bin/env php
<?php echo "test"; ?>
Run Code Online (Sandbox Code Playgroud)
Shebang#!变化:
#!/usr/bin/php
#!/usr/bin/env php
Run Code Online (Sandbox Code Playgroud) 当我在Linux上使用python,甚至从命令行使用Mac OS时,我会利用shebang并直接运行我的一些脚本,如下所示:./myScript.py.我确实需要为此脚本提供可执行权限,但这就是全部.
现在,我刚刚在Windows 7上安装了Python 3.1.2,我希望能够从命令行执行相同的操作.我还需要遵循哪些其他步骤?
是否可以在文件的开头声明它应该作为Groovy脚本执行?
其他脚本语言的示例:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
Run Code Online (Sandbox Code Playgroud) 我尝试构建可以随处运行的脚本.为此我使用了一个定制的python,它总是在相对于脚本的父目录中.
通过这种方式,我可以将我的软件包加载到USB记忆棒上,无论硬盘安装在何处以及是否安装了python,它都可以在任何地方使用.
但是,当我使用时
#!../python
Run Code Online (Sandbox Code Playgroud)
然后它只在从其目录调用脚本时才起作用,这当然是不可接受的.
有没有办法做到这一点,还是在当前的shebang机制中这是不可能的?
有没有一种标准方法可以确保python2而不是python3解释python脚本?在我的发行版中,我可以使用#!/ usr/bin/env python2作为shebang,但似乎不是所有的发行版都发布了"python2".我可以明确地调用python的特定版本(例如2.6),但这将排除那些没有该版本的人.
在我看来,当发行版开始将python3作为默认的python解释器时,这将成为一个越来越大的问题.
一些脚本语言(如Python或Bash)#用于注释.
#!/usr/bin/env python
print 'hello, world'
Run Code Online (Sandbox Code Playgroud)
我可以运行脚本:
python script.py
Run Code Online (Sandbox Code Playgroud)
要么
./script.py
Run Code Online (Sandbox Code Playgroud)
是否有可能使JavaScript支持shebang?