問題タブ [shebang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python のデプロイと /usr/bin/env の移植性
実行可能なすべての Python スクリプトの先頭に、次のようなシバン行を追加しました。
env python
Python 2.2 環境を生成するシステムでこれらのスクリプトを実行しています。互換性のある Python バージョンを手動でチェックしているため、スクリプトはすぐに失敗します。
可能であれば、実行可能ファイルごとにシバン行を変更する必要はありません。ただし、結果を変更するためのマシンへの管理アクセス権がなく、次のenv python
ように特定のバージョンを強制したくありません。
システムに Python 2.4 よりも新しいバージョンがあるか、Python 2.5 はあるが Python 2.4 がない可能性があるため、これは避けたいと思います。
エレガントなソリューションは何ですか?
[編集:] 私は質問を提起する際に十分に具体的ではありませんでした -- ユーザーが手動で構成せずにスクリプトを実行できるようにしたいと思います (たとえば、パスの変更またはシンボリックリンクを作成し~/bin
、PATH が~/bin
Python 2.2 パスの前にあることを確認します)。手動での微調整を防ぐために、何らかの配布ユーティリティが必要になるのでしょうか?
windows - Ruby/Webrick の場合、シバン (#!) 表記を認識するための Windows が必要です
(ご容赦ください。これがシバンとウィンドウに到達することを約束します。)
私は、最も単純なWEBRickサーバーをまとめました。
これ以上簡単なことはありません。この基本的なサーバーは、http 接続 (firefox、インターネット エクスプローダー、wget、TELENT) を受け入れ、静的ドキュメントをフェッチするだけであれば、それらを適切に処理します。ただし、ディレクトリ内のファイルの 1 つに .cgi 拡張子を設定すると、500 が返され、サーバーのターミナルに次のように表示されます。
cgi_runner.rb の 45 行目で行われていることを模倣するために、コマンド ラインでいくつかのことを行いました。
明らかに、WEBrick は Windows への着陸を許可されていません。あなたのいつもの企業パラノイアの頭痛の種は、私が webrick を変更することを妨げているので、OS (Windows) によって認識される c:/rubyCGI/test.cgi のシバン表記を取得できますか?使用する? すべての .cgi ファイルを ruby に関連付けることができましたが、長期的には制限されます。
更新: これを投稿して以来、Ruby から CGI Web サーバーを実行することはまったくできないかもしれないと思いました。ruby は fork をサポートしていません。プロセスをフォークする機能がないため、cgi サーバーは各 cgi スクリプトを一度に 1 つずつ実行する必要があり、最初のリクエストが完了するまですべての同時リクエストを無視していました。これは一部の人には受け入れられるかもしれませんが、私のアプリケーションでは機能しません。とはいえ、最初の質問に対する答え、つまり窓の下でシバンを動かすという質問にはまだ非常に興味があります。
linux - /usr/bin/env questions regarding shebang line pecularities
Questions:
- What does the kernel do if you stick a shell-script into the shebang line?
- How does the Kernel know which interpreter to launch?
Explanation:
I recently wanted to write a wrapper around /usr/bin/env because my CGI Environment does not allow me to set the PATH variable, except globally (which of course sucks!).
So I thought, "OK. Let's set PREPENDPATH and set PATH in a wrapper around env.". The resulting script (here called env.1) looked like this:
which looks like it should work. I checked how they both react, after setting PREPENDPATH:
Look absolutely perfect! So far, so good. But look what happens to "Hello World!".
I guess I am missing something pretty fundamental about UNIX.
I'm pretty lost, even after looking at the source code of the original env. It sets the environment and launches the program (or so it seems to me...).
python - Pythonソースヘッダーコメント
ラインは何ですか
に使用されるPythonスクリプトの最初の行で?
linux - ファイルの先頭にある#!/ usr / bin / ...はどういう意味ですか?
私はHaskellでこのようなことをすることができます:
その後、私はそれを実行することができます./hello.hs
私の質問は、なぜ最初の行が無視されるのですか?haskellのコメントはで始まります--
が、最初の行はまだ無視されているようです。ghciにもロードされます。このトリックはPythonとPerlでも機能します。
しかし、Javaで同様のことを行うと、次のようになります。
Javacでコンパイラエラーが発生します。
では、これはどのように機能し、Javaでどのように機能させるのでしょうか。
ありがとう。
shell - パラメータ(vars)を使用して、awkシバンを持つスクリプトを呼び出す
このように定義した awk スクリプトがあります。
名前を付けて保存しましcolumns
たchmod +x
。start
ファイルをトラバースするときにとend
が定義されるように呼び出したいと思います。私はこれがうまくいくはずだと思っていました:
しかし、そうではありません。ヘルプ!
linux - ": コマンドが見つかりません"
env ファイルの 1 つをソースするときに問題が発生します (一連の変数のエクスポート)。
例えば:
結果は
=> "/bin" は、変数の先頭に接尾辞を付けるのではなく、変数の先頭を上書きしているようです..
何か案が?
ところで、このファイルをソースするたびに、エラー メッセージが報告されます。
これは奇妙です..このメッセージは、コンテンツ全体にコメントしても表示されます。
最初に呼び出されたシェルが良さそう#!/bin/sh
、または#!/bin/bash
.
制御文字についてはどうですか?Linuxでそれらをスクリーニングする方法は?
ruby - OS X シバン問題での Rubygame
I'm playing around with Rubygame. I installed it with the Mac Pack, and now I have the rsdl executable. rsdl game.rb
works fine, but when I chmod +x the rb file, add the shebang to rsdl (tried direct path and /usr/bin/env rsdl) and try to execute it (./game.rb
), it starts to flicker between the Terminal and rsdl which is trying to open, and eventually gives up and gives a bus error
. Anyone know what's causing that? I'm on Snow Leopard (10.6.2) if it makes a difference.
Thanks.
windows - Apache 2 を使用する Windows で Perl シバンを無視するにはどうすればよいですか?
Windows マシンにローカル Perl Web 環境をセットアップしました。私が取り組んでいるアプリケーションは、もともと Linux サーバーからのものであるため、ソース.pl
ファイルのシバンは次のようになります。
これにより、Windows 開発マシンで次のエラーが発生します。
Windows マシンでシバンが無視されるように Apache 2 conf を変更することはできますか? もちろん、シバンを に設定することもできますが#!c:\perl\bin\perl.exe
、それは明らかです。しかし、問題は更新されたファイルの展開にあります。明らかに、デプロイごとにこれを元に戻すのは非常に不便です。Windows 7 でActivePerlを使用しています。
アップデート:
スクリプトが共有ホスティング Linux 実動サーバーで機能するように、シバンを保持する必要があることを言及する必要がありました。この制約がなく、シバンを使用する必要がなかった場合、明らかな答えは使用しないことです。
python - 同じバッチ ファイルからバッチ ファイルの最初の行を読み取りますか?
最初の行で指定されたプログラムを実行しようとするバッチ ファイルがあります。Unix のshebangに似ています:
私が知りたいのは、シバン ( ) に続くスクリプトの最初の行で指定されているものを自動的に設定%PYTHON%
する方法はありますか?C:\Python27\python.exe
#!
背景: ラッパー スクリプトで (システムに複数の Python インタープリターがインストールされているため) 呼び出す Python インタープリターを明示的に指定するために、これを実行しようとしています。
前提foo
: スクリプトは、それ自体のファイル名 ( ) を既に認識しており%~dp0
、このスクリプトのディレクトリであると想定できます。シバンを除いた最初の行をどのように読みますか?
明確化: C:\PythonXY を %PATH% に追加することは解決策ではありません。シバン行は、ユーザーのマシンでインストール時に変更されることになっています (元のスクリプトはビルド マシンでのみ生成されます)。これには、同じバージョンの Python が複数インストールされている可能性があります。そして、シバン行のみが変更可能です (これがプログラムの動作です)。