2024-01-07

anond:20240107191403

シェルスクリプト使用したコマンドのすべての挙動を把握している?

使用予定のオプションだけでも出力結果のすべてのパターンを把握している?

標準ライブラリのすべての関数のありとあらゆる引数に対する挙動を把握している?

 

人が手て使うことを想定された曖昧さの残るコマンドと、

標準コマンドは標準入出力を通してプログラム同士で連携することを想定して作成されており、

入出力の破壊的変更を気軽にコミットしようとしたら秒でハネられます

 

高級言語インタプリタほど頻繁なセキュリティアップデート必要ない

頻繁なセキュリティアップデート必要ない

「ゾウリムシよりも蟻は大きい」を「蟻は大きい」で切って引用するのはやめましょう

 

そもそもシェルスクリプトが規模が大きくなると信頼できないその場しのぎ的な技術であることを認めているよね

規模が大きくなると信頼できない、その場しのぎ的な技術であるのはpythonなどのスクリプトの実行環境も同様です

すべての処理、すべてのプログラムをRustで書くような行為はきわめて非生産的ですし、シェルスクリプト以上に危険です

 

「よく検証されている」というのはされているかいないかというバイナリーな概念ではなく程度問題なので、UNIXの標準コマンド高級言語の標準ライブラリなら標準コマンドの方が"遥かに"よく検証されているし

論理的じゃないよね

メンテナの数、レビューする人数、実際に動作している環境etc

 

記事への反応 -
  • ヤバいって言ってるだけだが。 シェルスクリプトの問題点について考えたこと無い?

    • いや別にヤバくないけど インタプリタ自体も含めて、よくテストされてコードの内容も大勢の人間に検証されている標準コマンドの組み合わせでバッチ処理できるならそれに越したこと...

      • シェルで使われてるコマンドってドキュメント化されてない機能多すぎて入出力が全然信頼できない、特定の条件でコマンドの出力結果がずれ込んだり変な文字が入ったりとか経験ある...

        • 別に高級なスクリプト言語でも標準ライブラリやインタプリタのバグは踏むときは踏むし マイクロタスクな標準コマンドは高級言語のインタプリタほど頻繁なセキュリティアップデート...

          • 高級なスクリプト言語でも標準ライブラリやインタプリタのバグは踏むときは踏むし バグとかじゃなくて、開発者が把握してない動作の話なんだが、 シェルスクリプトに使用したコ...

            • シェルスクリプトに使用したコマンドのすべての挙動を把握している? 使用予定のオプションだけでも出力結果のすべてのパターンを把握している? 標準ライブラリのすべての関数...

              • 標準コマンドは標準入出力を通してプログラム同士で連携することを想定して作成されており、 入出力の破壊的変更を気軽にコミットしようとしたら秒でハネられます Linuxのシステ...

                • 標準コマンドは標準入出力を通してプログラム同士で連携することを想定して作成されており、 入出力の破壊的変更を気軽にコミットしようとしたら秒でハネられます Linuxのシス...

                  • 頻繁にアップデートは正しくて最新版を使うのが正義だと思ってそう 何がどうなっているか最近見えるようになったよその業界と違ってそのコードはクソだからやめたまえってずっとや...

                  • 多分、ソフトウェア工学でいう検証とかソフトウェアテストの話と、ライブラリやコマンドにバグがあるかどうかという話を取り違えている所が話が擦り合わないポイントな気がするね...

                    • 話を取り違えている所が 見たこと無いにもかかわらず 論点先取の詭弁というやつですね   あなたこそ使っているコマンドのコミット履歴を見たことありますか? UNIXのコマンドな...

            • 横からだがシェルスクリプトで使用してるコマンドの仕様を把握するのなんて高級言語で使用するAPIの仕様を把握するのと同じぐらい基本的で当たり前のことだよ。manっていうコマンド...

          • 横からだがシェルスクリプトやばい増田へ。これほど丁寧に解説して貰えるのはありがたいことなのでよく読んで理解しておきなよ 君の好きそうなところだとDockerのコンテナイメージ...

            • ほかの回答でも書いてるがシェルプロセス経由するとかは別に気にしてないんだよね。 正直技術のツギハギでもソフトウェア工学のテストの要件満たせてれば問題ないんだけど、 曖昧さ...

              • 曖昧さっていうのが何かわからん。マイナーなコマンドを後から入れたとかじゃなくて標準的なコマンドを使うとして、manで出てくる情報で何が不足しているかピンとこないんだが

                • あんさん、Dockerとか言ってるしあんまりシェルの凄まじい現場とか見たこと無いのでは。 シェルってのは人間の向けのコマンドの出力結果をawkとかsedで分解して後続につなげるもんなん...

                  • そのような「シェルスクリプトの凄まじい現場」があることは、 シェルスクリプトをプロダクションで動かしてる会社はやばい という主張を正当化しません 膨大な数のプロジェクト...

                  • 別の人が規模や複雑さが高くなるなら別の言語に切り替える的なこと書いてたでしょ。保守のコストが深刻になってきたら別の実装に切り替えるのは普通のことだと思うが。そういう用...

                    • 例えば実行速度までマネージメントしていたり、応答性能からハードウェアの性能要件割ったら予防交換の為にシステムから切り離すようなレベルならそういう意識でも結構だけど、現...

                      • 話のつながりが全然分からなくなったぞ!各文の内容とシェルスクリプトがどう関わってくるのか説明してくれないか?

                  • sedとawkなんてバチバチにPOSIXで仕様定義されてる代表格じゃないの?

                • きみは一回既存企業のフルマネージド化みたいな現実のサービス構造に触れた方がいいと思うよ。 世の中きみが思ってる程小規模でもなければ単純でもないし、たかだか200ノード程度の"...

                  • 現実のプロダクションに触れてればシェルスクリプトをプロダクションで使ってるだけでヤバいなんて発言自体が出てこないと思うが……

                    • 逆に聞くけどシェルスクリプトをほとんど使ってない現場とかは経験したことある? cronとかじゃなくてワークフロー管理ツールを使ってたりとか

                      • それフロントがごまかされてるだけで中はバチクソにシェルスクリプト走ってません? インフラ屋の方がずっと多い増田でサービス屋が寝言いってたの?

                      • 普通にワークフロー管理ツールからシェルスクリプトキックするけどな。これまで経験した現場だとJP1が多いな。

                      • Webで操作できればシェルとか要らないと思ってる系の素人さんかな。ここも解散が近いな

                      • きみ運が良かったねぇ 先月アドベントカレンダーってあちこちで技術記事ぽこぽこ生えてた時期にやってたらこんなに伸びなかったよ

                      • ワークフロー管理ツールと言われてGUIとかWebを想定するやつがなんでこんなに多いんだ

                  • それは君が言ってる現実の範囲が狭すぎるわ。。。単にシェルスクリプトの運用ノウハウがない人たちの集まりだがフルマネージド化というプロジェクトの特質によりシェルスクリプト...

        • 分かったから、分かった分かった。じゃあ君はrustで書いてなさい

    • デバッグとかで不安とか? シェルスクリプトのデバッガーとかあるのかな 知らんけど

      • vscodeで使えるやつがあったはず。ちょっと複雑なやつ書く時には便利だよ

    • 分かる Macユーザーは無能だからごみみたいなシェルスクリプトしか書けないよね

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん