- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在我收集的大量 Ruby 脚本中,我确实以常见的 shebang 开始我的脚本:
#!/usr/bin/env ruby
现在我发现一些脚本确实需要特定的 Ruby 版本,不,它们不是可以在特定 Ruby 版本下部署的 Rails 应用程序。它们只是可以从命令行启动并且无法与系统版本一起使用的单个文件脚本。
在运行文件的以下代码之前,有什么方法可以编写一个 shebang 来使用 rbenv/rvm 设置环境?
最佳答案
您不一定需要设置任何环境。您所需要的只是要运行的 ruby 二进制文件的路径,其他一切都会随之而来。
这是一个关于如何设置它的例子:
创建文件夹 ~/bin
。这将包含指向您所有个人 ruby 二进制文件的指针(符号链接(symbolic link))。
更新您的 shell PATH
,使 ~/bin
包含在可执行文件的搜索路径中。
将您在 ~/bin
中需要的任何 ruby 二进制文件符号链接(symbolic link)到实际的 ruby 二进制文件。
例如在我的 ~/bin
我有:
ruby18 -> /opt/ruby18/bin/ruby
ruby19 -> /opt/ruby19/bin/ruby
ruby20 -> /opt/ruby20/bin/ruby
现在假设您有一个需要 1.9 才能运行的脚本。那么您需要做的就是:
#!/usr/bin/env ruby19
如果您已将 gems 安装到每个 ruby 可执行文件的默认 gem 目录中,这将起作用。如果您在其他地方安装了 gem,那么它会变得更加复杂,您需要在运行脚本之前修改 GEM_PATH
。
如果你不想对 ~/bin
着迷,那么只需硬编码你的 shebang 行,而不是直接指向 ruby 二进制文件:
#!/opt/ruby19/bin/ruby
...或等效的 rbenv/rvm 路径。
在你的 ~/bin
中有符号链接(symbolic link)可以让你更轻松地更新你的 bin 指针,如果你编译了一个新的 ruby 1.9 补丁,并且你想将它放在另一个文件夹中,比如/opt/ruby19-p123
。然后你只需要更新 ~/bin
中的符号链接(symbolic link),你所有的脚本都会运行新的补丁版本。
关于ruby - 多个版本的 shebang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204016/
我试图了解 perl 如何处理 shebang 行。 我曾经认为命令行“命令位置”中提到的任何解释器都会优先于 shebang 行中提到的解释器。例如,如果一个名为 demo 的可执行脚本看起来像这样
我无法获取 Gforth当我有 shebang 时运行在脚本的顶部,例如: #!/usr/bin/gforth : pinoke ." I'm a real boy!!! " pinoke Unix
考虑以下代码: #!/usr/bin/env python import sys print "Hello! I've got %r as input." % sys.stdin.read() 这是
我正在尝试在 CentOS 6 中运行 bash 脚本。如果没有 shebang header ,它就无法工作。但是,当我包含 shebang 时,它会显示一条错误消息! 这是一个名为 test.sh
我得到了一个正则表达式,它使用这个正则表达式代码删除了 bash 中的注释 '/^\#/d' 但它也删除了 #!这不应该是因为它不是评论标签而是 shebang 那么忽略#! 怎么办呢?在正则表达式中
我打算在 php 脚本中添加一个 shebang 行 #!/bin/env php 但我环顾四周,似乎人们并没有这样做。 http://github.com/zurb/foundation/blob/
是Shebang #! ,例如 #!/bin/sh 在 Linux 标准库或任何 The Open Group 标准或其他地方正式标准化的脚本可执行文件之前?如果是,请提供引用资料和详细信息。 注意:
与使用 set 在 shebang 行上传递给脚本的标志有关的行为是否存在差异?内置? 例如: #!/bin/bash -e # do stuff 对比 #!/bin/bash set -e # do
这个问题已经有答案了: Why do people write "#!/usr/bin/env python" on the first line of a Python script? (22 个回
$ cat hello.ml #!/usr/bin/env ocamlrun ocaml let rec main = print_string "Hello World!\n" $ ./hello.
我的电脑上有/bin/bash (3.2) 和/usr/local/bin/bash (4.0)。在 $PATH 环境变量中,bash 4.0 早于 bash 3.2。 在我的 bash 脚本 she
是否可以向文件添加 shebang 行,以便它引用远程计算机上的程序? 例如,我没有在我的本地机器上安装 wolframscript,但我在远程机器上安装了。所以不是 #!/usr/bin/env w
我有一个简单的 cli 将时间戳转换为人类可读的日期时间。出于某种原因,当我尝试调用它时,我改为从 imagemagick 调用 import 命令。 > ts 1400029200000 Versi
要使 Python 脚本在 Linux 和 bash 上可执行,可以使用 shebang #! /usr/bin/env python 作为脚本的第一行。如果这一行恰好以 Windows 风格的换行符
我不太擅长 bash,我尝试编写一个脚本来使用 openSSH 连接到我的所有交换机,以便进行一些配置。 我创建了一个包含所有 25 个交换机的数组,然后使用循环打开与每个交换机的 SSH 连接。 由
我在 django 生产环境中使用 PythonAnyhwere。我有一个应该按计划运行的脚本。 由于我在 virtualenv 中安装了 django,因此脚本开始如下 #!/usr/bin/env
我在 Solaris 环境中运行 Python 脚本时遇到以下问题。 看来我在 shebang 行上做了一些不正确的事情,但我无法判断这是 Python 3 问题还是命令行问题。 但我怀疑它与 she
要使 Python 脚本在 Linux 和 bash 上可执行,可以使用 shebang #! /usr/bin/env python 作为脚本的第一行。如果这一行恰好以 Windows 风格的换行符
我在一台 linux 机器上执行了下面的代码,它执行得很好,但是当我在另一台 linux 机器上执行时,它给出了如下错误 Error:( declaration is not correct --
我目前正在编写一个 awk 脚本,如下所示: #!/usr/bin/awk -f BEGIN { print "Starting extracting data" } { print
我是一名优秀的程序员,十分优秀!