探検


#!/usr/bin/env bash ← 🤔

1login:Penguin
垢版 |
2025/04/07(月) 00:34:43.94ID:s+VUvHBA
正統派なら
#!/bin/bash
#!/usr/bin/python3
など決め打ちだろ
バージョン違いで挙動が異なるなら尚更決め打ち

bashやpython3の場所が異なる可能性を挙げていて
envは変わる確率が低いという無茶苦茶謎理論
https://news.mynavi.jp/techplus/article/techp3085/
インストール先に合わせて
#!/usr/local/bin/pytho3
とか書き換えろよ
それもできないようなのがスクリプト走らすとか恐怖だよ
2login:Penguin
垢版 |
2025/04/07(月) 08:42:32.40ID:Sspbwbz9
変な絵文字入れるの流行ってんのか?
2025/05/23(金) 21:17:59.82ID:0cRRXvyK
POSIX UNIX and Linux script best practice guideが参考になるぞ

その書き換えを不要にするのがenvであり、
/usr/bin/env bashとか/usr/bin/env python3といったshbangで
期待されている動作をするよう
OSは構築されていることが求められている
4login:Penguin
垢版 |
2025/05/30(金) 12:06:59.23ID:uRKoLJif
env はなぜ
/usr/bin/env で決め打ちできるわけ?
システムに複数のpython3がある場合にどの python3で動くか決定的ではなく
ユーザー設定によるので当てにならない
5login:Penguin
垢版 |
2025/05/30(金) 12:09:35.55ID:uRKoLJif
例えば
/usr/bin/python3
/usr/local/bin/python3
/home/userA/bin/python3
とある場合
env で呼ばれる python3 は$PATHによって異なる
2025/05/30(金) 16:51:14.13ID:xhoREEXj
ユーザーがactivateしたvenvと同じ環境で走らせたいスクリプトもあれば固定環境で走らせたいスクリプトもあるだろ
使い分けろ
2025/05/31(土) 20:24:24.71ID:nUxZuYDd
>>4
/usr/bin/envは決め打ちしているものではなく、
利用者は/usr/bin/envがある環境を用意する責任がある、という指針の結果だよ

Pythonの件も、利用者にはenvの評価結果で適切なpython3が選ばれるような
環境を用意する責任がある

そういう責任共有モデル
2025/06/01(日) 03:57:59.00ID:SR02+F16
#!/usr/bin/python3
を自分の好みにあわせて
#!/home/userA/bin/python3
などと書換える方が安全だと思う
こっちは全部自分の意志で行うから

#!/usr/bin/env python3
は不適切でも動いちゃう
2025/06/01(日) 11:32:15.42ID:OLS6TxiM
>>8
利用者がPythonを好みで選べる環境を作ったのなら、
#!/usr/bin/env python3 なスクリプトが
好みのPythonで起動できる状態にするのは利用者の責任となるのではないかな

昨今のEPPやクラウドの監視が動いてる環境だと、shebangだけとはいえスクリプトを改変すると、
レポジトリに登録されているものから改変されている等と警告が上がるかと

そういう面倒な検知を防ぎつつ、本当のスクリプトの改変を検知できるようにするためにも、
shebangでは/usr/bin/envを使いましょうね、と
10login:Penguin
垢版 |
2025/06/01(日) 11:44:46.08ID:SR02+F16
上で出ていた
POSIX UNIX and Linux script best practice guide
なり
このもとの理論ってどこにあるの?
誰が提唱しているの?
2025/06/01(日) 14:28:44.39ID:CXRoilnc
複数のpython3 っておまえ面倒くせえことしてるなw
2025/06/01(日) 19:59:15.43ID:hIpIBTye
venvやコンテナ使ってれば複数あるのは当たり前でしょ
2025/06/01(日) 20:12:36.49ID:cqop4uSm
この環境は/bin/shがdashなのでshebangはこう変える、
あのスクリプトはあのバージョンのPythonを使いたいのでこうする、というのって
過去の名残というよりも、それが腐ってできたバッドノウハウだと思うんよね
2025/06/01(日) 20:17:10.47ID:hIpIBTye
それ言ったら#!自体がなー
ファイルの拡張属性でやるのが正解とは思う。FAT系のことは忘れろ
15login:Penguin
垢版 |
2025/06/01(日) 20:57:13.26ID:f2koINJC
全部同じ環境にするのは無理です終わり
2025/06/02(月) 03:10:18.32ID:xo4/TAEW
なので、スクリプトはenvを使う、利用者はそれ前提で環境を作る、というのが落としどころなのだろう
17login:Penguin
垢版 |
2025/06/02(月) 20:41:46.95ID:Vp1AjuB0
これLinuxが普及してスクリプトを動かす人が
#! の意味も分からない書換えもできないまま動かしているからだよね
Windowsのマルウェアと同じで危険な兆候なんじゃないの?
最低限の知識も持たず使う人たちの存在
2025/06/02(月) 21:20:51.93ID:5/UW0z/h
シバン書き換えたら改ざん検知されたでござる

まあもうそういう時代なのだから、envを利用する、に舵を切ってもよいのでは

Linuxに閉じた話とするにしてもbash、dash、zshが入り乱れているのだしさ
19login:Penguin
垢版 |
2025/06/02(月) 22:37:46.51ID:NF5N+/2D
もう誰も興味無いんだわOSの仕組みなんか
20login:Penguin
垢版 |
2025/06/14(土) 13:48:10.95ID:HGD7iMV2
やっぱりみんなユーザランドよりカーネルのほうが興味あるんだね
21login:Penguin
垢版 |
2025/06/14(土) 20:03:08.80ID:yrLG8RWJ
https://docs.python.org/ja/3.13/tutorial/appendix.html
Pythonチュートリアル 16.1.2. 実行可能な Python スクリプト
#!/usr/bin/env python3

https://docs.python.org/ja/3.13/using/unix.html
Python のセットアップと利用 2.4. その他
いくつかの Unix は env コマンドを持たないので、
インタープリターのパスを /usr/bin/python3 のように
ハードコードしなければならない
22login:Penguin
垢版 |
2025/06/14(土) 20:07:20.65ID:yrLG8RWJ
https://perldoc.perl.org/perlintro
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
23login:Penguin
垢版 |
2025/06/14(土) 20:23:33.53ID:yrLG8RWJ
https://www.gnu.org/software/bash/manual/bash.html
Bash Reference Manual

Bash scripts often begin with
#! /bin/bash

if it’s been installed in another directory:
#!/usr/bin/env bash
2025/06/15(日) 17:36:12.63ID:FDKRbYvX
>>2
クソジジイって言われてそう
2025/07/23(水) 06:00:28.31ID:bkgeRWwU
>>24
職場で仕事の邪魔してそう
26login:Penguin
垢版 |
2025/09/20(土) 14:13:11.85ID:rm9y10jT
ln -s で固定します
27login:Penguin
垢版 |
2025/10/12(日) 08:03:10.01ID:K2nNFmqm
>>7
いいモデル、そして慣習とは思うが
(今普及しているの実装の)envはあまりに色々多機能過ぎて第三者の再実装がとても難しい…

man見てみたら宇宙猫になるよ!!

#! /usr/bin/env interpreter
でPATHから予測可能な順序で正しいinterpreter選んでくれる、それだけで十分なのに
環境変数からみ、複数引数対応の為の難解なエスケープ規則etc etc、肥大化しすぎ

どこか…posix?でもlsb?でもいいから、利害団体で必要最小限の機能を定めて公布してほしいよ…
28login:Penguin
垢版 |
2025/10/12(日) 13:51:34.36ID:QAp1T8of
「お前らもう何もするな」って言いたくなることがITには多すぎる
29login:Penguin
垢版 |
2025/10/18(土) 13:45:58.31ID:PwcJHP1D
man envは闇だなあ
まさにお前らもう余計な事すんな

お陰でPOSIX等にも入りようがない仕様だし、envのある保証も規格の統一も望めない

env作者は死んで詫びろ
30login:Penguin
垢版 |
2025/10/18(土) 14:47:52.14ID:PwcJHP1D
unix哲学に真っ向から敵対するのがenv
#! /usr/bin/env someprog
というシンプル使い方だけなら良いんだけどね
無駄な機能多すぎィ!
31login:Penguin
垢版 |
2025/10/19(日) 05:24:46.48ID:lO1VDQuf
必要な機能ではなくあってはならない機能を定義すべき
2025/11/06(木) 08:29:20.43ID:4zGDeFUT
シバンって日本語っぽくてダサい
2025/11/08(土) 00:13:50.10ID:819D+aD7
機動刑事
レスを投稿する


ニューススポーツなんでも実況