25/04/07 08:42:32.40 Sspbwbz9.net
変な絵文字入れるの流行ってんのか?
3:login:Penguin
25/05/23 21:17:59.82 0cRRXvyK.net
POSIX UNIX and Linux script best practice guideが参考になるぞ
その書き換えを不要にするのがenvであり、
/usr/bin/env bashとか/usr/bin/env python3といったshbangで
期待されている動作をするよう
OSは構築されていることが求められている
4:login:Penguin
25/05/30 12:06:59.23 uRKoLJif.net
env はなぜ
/usr/bin/env で決め打ちできるわけ?
システムに複数のpython3がある場合にどの python3で動くか決定的ではなく
ユーザー設定によるので当てにならない
5:login:Penguin
25/05/30 12:09:35.55 uRKoLJif.net
例えば
/usr/bin/python3
/usr/local/bin/python3
/home/userA/bin/python3
とある場合
env で呼ばれる python3 は$PATHによって異なる
6:login:Penguin
25/05/30 16:51:14.13 xhoREEXj.net
ユーザーがactivateしたvenvと同じ環境で走らせたいスクリプトもあれば固定環境で走らせたいスクリプトもあるだろ
使い分けろ
7:login:Penguin
25/05/31 20:24:24.71 nUxZuYDd.net
>>4
/usr/bin/envは決め打ちしているものではなく、
利用者は/usr/bin/envがある環境を用意する責任がある、という指針の結果だよ
Pythonの件も、利用者にはenvの評価結果で適切なpython3が選ばれるような
環境を用意する責任がある
そういう責任共有モデル
8:login:Penguin
25/06/01 03:57:59.00 SR02+F16.net
#!/usr/bin/python3
を自分の好みにあわせて
#!/home/userA/bin/python3
などと書換える方が安全だと思う
こっちは全部自分の意志で行うから
#!/usr/bin/env python3
は不適切でも動いちゃう
9:login:Penguin
25/06/01 11:32:15.42 OLS6TxiM.net
>>8
利用者がPythonを好みで選べる環境を作ったのなら、
#!/usr/bin/env python3 なスクリプトが
好みのPythonで起動できる状態にするのは利用者の責任となるのではないかな
昨今のEPPやクラウドの監視が動いてる環境だと、shebangだけとはいえスクリプトを改変すると、
レポジトリに登録されているものから改変されている等と警告が上がるかと
そういう面倒な検知を防ぎつつ、本当のスクリプトの改変を検知できるようにするためにも、
shebangでは/usr/bin/envを使いましょうね、と
10:login:Penguin
25/06/01 11:44:46.08 SR02+F16.net
上で出ていた
POSIX UNIX and Linux script best practice guide
なり
このもとの理論ってどこにあるの?
誰が提唱しているの?
11:login:Penguin
25/06/01 14:28:44.39 CXRoilnc.net
複数のpython3 っておまえ面倒くせえことしてるなw
12:login:Penguin
25/06/01 19:59:15.43 hIpIBTye.net
venvやコンテナ使ってれば複数あるのは当たり前でしょ
13:login:Penguin
25/06/01 20:12:36.49 cqop4uSm.net
この環境は/bin/shがdashなのでshebangはこう変える、
あのスクリプトはあのバージョンのPythonを使いたいのでこうする、というのって
過去の名残というよりも、それが腐ってできたバッドノウハウだと思うんよね
14:login:Penguin
25/06/01 20:17:10.47 hIpIBTye.net
それ言ったら#!自体がなー
ファイルの拡張属性でやるのが正解とは思う。FAT系のことは忘れろ
15:login:Penguin
25/06/01 20:57:13.26 f2koINJC.net
全部同じ環境にするのは無理です終わり
16:login:Penguin
25/06/02 03:10:18.32 xo4/TAEW.net
なので、スクリプトはenvを使う、利用者はそれ前提で環境を作る、というのが落としどころなのだろう
17:login:Penguin
25/06/02 20:41:46.95 Vp1AjuB0.net
これLinuxが普及してスクリプトを動かす人が
#! の意味も分からない書換えもできないまま動かしているからだよね
Windowsのマルウェアと同じで危険な兆候なんじゃないの?
最低限の知識も持たず使う人たちの存在
18:login:Penguin
25/06/02 21:20:51.93 5/UW0z/h.net
シバン書き換えたら改ざん検知されたでござる
まあもうそういう時代なのだから、envを利用する、に舵を切ってもよいのでは
Linuxに閉じた話とするにしてもbash、dash、zshが入り乱れているのだしさ
19:login:Penguin
25/06/02 22:37:46.51 NF5N+/2D.net
もう誰も興味無いんだわOSの仕組みなんか
20:login:Penguin
25/06/14 13:48:10.95 HGD7iMV2.net
やっぱりみんなユーザランドよりカーネルのほうが興味あるんだね
21:login:Penguin
25/06/14 20:03:08.80 yrLG8RWJ.net
URLリンク(docs.python.org)
Pythonチュートリアル 16.1.2. 実行可能な Python スクリプト
#!/usr/bin/env python3
URLリンク(docs.python.org)
Python のセットアップと利用 2.4. その他
いくつかの Unix は env コマンドを持たないので、
インタープリターのパスを /usr/bin/python3 のように
ハードコードしなければならない
22:login:Penguin
25/06/14 20:07:20.65 yrLG8RWJ.net
URLリンク(perldoc.perl.org)
put this as the first line of your script:
#!/usr/bin/env perl
You can also put directly the path to your perl executable, like in
#!/usr/bin/perl
23:login:Penguin
25/06/14 20:23:33.53 yrLG8RWJ.net
URLリンク(www.gnu.org)
Bash Reference Manual
Bash scripts often begin with
#! /bin/bash
if it’s been installed in another directory:
#!/usr/bin/env bash
24:login:Penguin
25/06/15 17:36:12.63 FDKRbYvX.net
>>2
クソジジイって言われてそう
25:login:Penguin
25/07/23 06:00:28.31 bkgeRWwU.net
>>24
職場で仕事の邪魔してそう
26:login:Penguin
25/09/20 14:13:11.85 rm9y10jT.net
ln -s で固定します
27:login:Penguin
25/10/12 08:03:10.01 K2nNFmqm.net
>>7
いいモデル、そして慣習とは思うが
(今普及しているの実装の)envはあまりに色々多機能過ぎて第三者の再実装がとても難しい…
man見てみたら宇宙猫になるよ!!
#! /usr/bin/env interpreter
でPATHから予測可能な順序で正しいinterpreter選んでくれる、それだけで十分なのに
環境変数からみ、複数引数対応の為の難解なエスケープ規則etc etc、肥大化しすぎ
どこか…posix?でもlsb?でもいいから、利害団体で必要最小限の機能を定めて公布してほしいよ…
28:login:Penguin
25/10/12 13:51:34.36 QAp1T8of.net
「お前らもう何もするな」って言いたくなることがITには多すぎる
29:login:Penguin
25/10/18 13:45:58.31 PwcJHP1D.net
man envは闇だなあ
まさにお前らもう余計な事すんな
お陰でPOSIX等にも入りようがない仕様だし、envのある保証も規格の統一も望めない
env作者は死んで詫びろ
30:login:Penguin
25/10/18 14:47:52.14 PwcJHP1D.net
unix哲学に真っ向から敵対するのがenv
#! /usr/bin/env someprog
というシンプル使い方だけなら良いんだけどね
無駄な機能多すぎィ!
31:login:Penguin
25/10/19 05:24:46.48 lO1VDQuf.net
必要な機能ではなくあってはならない機能を定義すべき
32:login:Penguin
25/11/06 08:29:20.43 4zGDeFUT.net
シバンって日本語っぽくてダサい
33:login:Penguin
25/11/08 00:13:50.10 819D+aD7.net
機動刑事