シェルスクリプト総合 その31at TECH
シェルスクリプト総合 その31 - 暇つぶし2ch2:デフォルトの名無しさん
19/08/10 23:19:50.86 L+B8OP2P.net
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
 つまりシバンは #!/bin/sh です。
 特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
  macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
   自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
   ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
  FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
  Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
  macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
  android ユーザーは /bin/sh の実体が mksh なので注意。
 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
  (参考URL: URLリンク(www.speech-lab.org)
・POSIX に準拠しましょう
 有用なリンクは URLリンク(en.wikipedia.org) にまとめられています。
 最新の仕様はこちらへ: URLリンク(pubs.opengroup.org)
  (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
  Heirloom sh: URLリンク(heirloom.sourceforge.net)
  Dash shell: URLリンク(gondor.apana.org.au)
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
 Man ページや各種リンク(URLリンク(pubs.opengroup.org)など)を見ましょう。
 apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな

3:デフォルトの名無しさん
19/08/10 23:21:14.80 L+B8OP2P.net
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
 シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたら man(1) を引きましょう。
・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。
 安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。

4:デフォルトの名無しさん
19/08/10 23:21:34.36 L+B8OP2P.net
参考リンク
Bourne shellの種類とか歴史とかシェルの挙動とかいろいろ詳しい
URLリンク(www.in-ulm.de)

5:デフォルトの名無しさん
19/08/10 23:57:47.48 L+B8OP2P.net
関連スレ
【Bash】Windows Subsystem for Linux【WSL】6
スレリンク(linux板)
Bashでプログラミング [転載禁止](c)2ch.net
スレリンク(linux板)
シェルスクリプト総合 その28
スレリンク(unix板)
zsh その7
スレリンク(unix板)
【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
スレリンク(unix板)

6:デフォルトの名無しさん
19/08/11 00:00:50.90 GFStkW/c.net
【POSIX】 sh系互換 シェルスクリプトスレ
スレリンク(tech板)

7:デフォルトの名無しさん
19/08/11 02:27:44.34 d6NgfAAh.net
テンプレの「Version 7 UNIX の sh(1) に一番近い」ってそんな根拠ある?
むしろ「POSIX shを最もよく実装してる」ほうが適切な表現じゃね?

8:デフォルトの名無しさん
19/08/11 02:56:20.42 GFStkW/c.net
>>7
Heirloom shのことだとして(意図的だろうけど)POSIX shではなく
レガシーなBourne shellに近いから「Version 7 UNIX の sh(1) に一番近い」なんだよ
つまり、Version 7 UNIX の sh(1) は Bourne shell。
具体的には ArithmeticExpression $((1+2)) や
Parameter substitution のうち ${p#foo} や ${p%bar} みたいな
POSIXの仕様を実装してない。

9:デフォルトの名無しさん
19/08/11 03:02:13.27 GFStkW/c.net
もちろん次点のdashはPOSIX shを実装してる。
「最も」かどうかはしらんけど

10:デフォルトの名無しさん
19/08/11 06:42:57.65 d6NgfAAh.net
>>8
いや根拠ある?(公式文書内の発表とかで。無い気がする。)
しつこくてごめんね。小さいことが気になる性格なの。
Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century.
URLリンク(heirloom.sourceforge.net)

11:デフォルトの名無しさん
19/08/11 09:06:35.23 ++HFlOfG.net
>>10
根拠を自分で考えるってことができない性格なんだねw

12:デフォルトの名無しさん
19/08/11 09:08:41.84 ++HFlOfG.net
Version 7 UNIX の sh(1)やHeirloom Bourne Shellが
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)

13:デフォルトの名無しさん
19/08/11 09:11:01.36 ++HFlOfG.net
URLリンク(heirloom.sourceforge.net)
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません

14:デフォルトの名無しさん
19/08/11 09:14:38.09 ++HFlOfG.net
(あ、これ、いつもの人かな?推論能力が圧倒的に低くて、書いてある内容から
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)

15:デフォルトの名無しさん
19/08/11 09:16:58.74 lm+uP+yI.net
前スレ埋めてこいよw

16:デフォルトの名無しさん
19/08/11 09:42:08.39 d6NgfAAh.net
>>14
ワロタw
お前のそれは「推論」じゃなくて「論理の飛躍」だよ

17:デフォルトの名無しさん
19/08/11 09:44:11.25 ++HFlOfG.net
あー、やっぱり読み取れないんだ・・・

18:デフォルトの名無しさん
19/08/11 09:47:59.57 ++HFlOfG.net
かわいそうだから、せめて日本語訳にしてあげるね。
家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。
Bourneシェルは
・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。
・レガシースクリプトの処理。
いくつかの歴史的なスクリプトは、Bourneシェル独自の言語機能を使用していました。
それらをポータブルシェル言語に変換するのは難しい場合があるため、
Bourneシェルを使用して実行するのが便利な代替手段です。
・一般的なスクリプト処理。
Bourneシェルは、新しいUnixシェルほど多くの機能を提供しませんが、それでも非常に使いやすいスクリプト言語です。
また、Bourneシェルの言語は20年近く安定しており、この実装でも引き続き安定しています。
これにより、プログラマーが慣れ親しんだBourneシェルは驚くことのないスクリプト言語になります。
これは、新しいシェルの多くとは言えません。
・インタラクティブな使用。
Bourneシェルは、jshとして呼び出され 、端末で実行される場合、ジョブ制御を提供します。
もちろん、コマンド履歴、コマンドライン補完などの派手な機能はありません。しかし、これらの機能を使用すると、
ユーザーの注意をそらす傾向があります。慣れの段階の後、Bourneシェルを使用すると、
より均一で集中的な作業スタイルになります。試してみる。真剣に。

19:デフォルトの名無しさん
19/08/11 09:48:21.88 ++HFlOfG.net
これで(他の人は)理解できたやろ?w

20:デフォルトの名無しさん
19/08/11 09:55:06.43 FACDvm3m.net
ムキーってなってるの?そんなに連投して

21:デフォルトの名無しさん
19/08/11 10:00:36.39 ++HFlOfG.net
あそんでるだけやで、昨日からの続きで

22:デフォルトの名無しさん
19/08/11 10:05:58.63 lm+uP+yI.net
お前かわいいな

23:デフォルトの名無しさん
19/08/11 10:11:58.37 FACDvm3m.net
でも他人が同じようなことしたらムキーっとなってると言うよねえ

24:デフォルトの名無しさん
19/08/11 11:19:28.31 OeRZAsFl.net
>>7,10
derived from OpenSolaris code and thus implements the SVR4/SVID3 level
だから、Version 7 UNIX というのはいきなりっぽい
Version 7 UNIX の sh の重要性がまったくわからんが、SVR4 よりは重要、Version 7 UNIX の正当な流れを汲んだうちでの(ソースレベルで?)一番近いから、Version 7 UNIX としたんじゃないかな、そもそもソコを書いた人は
SVID3 は POSIX以前の時期での標準を作ろうとした規格のようなので、「POSIX shを最もよく実装してる」は無いんじゃないかな。SVID3とPOSIXの差異近似がわからんけど
あんま興味ない(使うことはないから)けどチラっと調べた範囲では。調べてもあんま興味わかないなw

25:デフォルトの名無しさん
19/08/11 12:03:55.85 d6NgfAAh.net
いや〜他人を怒らせないようにしてるんだけど
その当の他人がチガイだとどうしようもないなw

26:デフォルトの名無しさん
19/08/11 12:07:26.43 d6NgfAAh.net
「ムキー!ボクの意見と違うことを言うやつなんて嫌いだー!」

27:デフォルトの名無しさん
19/08/11 12:26:49.70 OeRZAsFl.net
落ち着こうなw

28:デフォルトの名無しさん
19/08/11 14:43:52.88 ++HFlOfG.net
>>24
> Version 7 UNIX の sh の重要性がまったくわからんが
それな。
「Version 7 UNIX の sh(1) に一番近いのは~」を最初に書いた当時は
まだレガシーなシェルスクリプトが存在したのかもね
このスレ元々UNIX板にあったわけだし
Heirloom shも(世間がPOSIX準拠になりつつある中)
レガシーなスクリプトを処理するために作った書かれてるし
日付を見ると2010年の話?
一般に商用UNIXと呼ばれるもの(macOSは含めない)が
閉鎖的で情報が共有されなくて、質問されても誰も確認できないでしょ?
Linuxばかり使われるようになった。だからその文章も時代に合わない。
次からは修正しておくよ。

29:デフォルトの名無しさん
19/08/11 15:06:11.53 ++HFlOfG.net
テンプレで質問
> ・ワイルドカードは正規表現ではありません。
みんなワイルドカードって呼ぶ? MS-DOSではワイルドカードって言ってたけど
なんとなく最近聞かない気がする。かと言ってグロブと呼ぶか?というとそれも詳しい人ぐらいしか
> ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
-xオプションと似たやつに-vってのがあるんだね。
みんな使ってる? 俺は使ってみるも、たくさん実行がでてきて面倒くさくて結局見なかったことにしちゃうw

30:デフォルトの名無しさん
19/08/11 18:20:03.32 ++HFlOfG.net
/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった。
今作ってやってみたけど、やっぱり、bashだとecho -n helloは
(POSIXにはない)-nを認識するね。
# which sh
/bin/sh
# /bin/sh
sh-3.2# ls -l /bin/sh
lrwxrwxrwx 1 root root 19 Aug 11 09:14 /bin/sh -> /usr/local/bin/bash
sh-3.2# sh --version
GNU bash, version 3.2.57(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh-3.2# sh
sh-3.2# echo -n hello
hellosh-3.2# exit
exit
sh-3.2# bash --posix
bash-3.2# echo -n hello
hellobash-3.2#
前スレ>>996はMacかな? (x86_64-apple-darwin18)って書いてるからそうだろうね。
Macの環境はビルドがおかしいのか時折変な動きをする。

31:デフォルトの名無しさん
19/08/11 18:24:50.03 k+c7cOcw.net
ええぇ、自分でMacもって言ってなかったかな?
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w

32:デフォルトの名無しさん
19/08/11 18:24:58.94 ++HFlOfG.net
へー、たしかに、macOS Mojaveのデフォルト(homebrewではない)のbash 3.2.57だと
echo -n hello が -n hello になるねw
これはひどいwww
なんでだろ。ちょっと調べてみるか。
その前に一言。だからPOSIX準拠で作れと言っただろー!

33:デフォルトの名無しさん
19/08/11 18:26:01.24 k+c7cOcw.net
それはお前の自説。うっかりだとしたらしょうがないで済む話

34:デフォルトの名無しさん
19/08/11 18:26:26.17 k+c7cOcw.net
てか、自分で確認できるくせにいろいろ妄想吐いていたのどうすんの?

35:デフォルトの名無しさん
19/08/11 18:27:23.91 ++HFlOfG.net
>>31
デフォルトはHomebrewのbashに切り替えてるのでね。
まさかbashで同じバージョンなのに、Linuxで-nを改行なしオプションと認識して
macOSだと-nを解釈しないとは思わなかった。
まだぐぐってないけど、これ話題になってるんじゃね?

36:デフォルトの名無しさん
19/08/11 18:27:43.86 ++HFlOfG.net
>>33
そういうお前の自説を述べられてもw

37:デフォルトの名無しさん
19/08/11 18:28:26.21 dSI5JGW8.net
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

38:デフォルトの名無しさん
19/08/11 18:28:44.04 k+c7cOcw.net
ああ、
>/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
って。ああ、ツッコミどころ満載。わくわくしてきだぞw
そんなグダグダのヤツの傲慢な偉そうなご高説、誰が聞くかっw

39:デフォルトの名無しさん
19/08/11 18:31:38.54 k+c7cOcw.net
>>31
デフォルトと/bin/shは違うんですけど。/bin/shも書き換えてんのか。OSのアップデートで書き換えられるのに。まあ、ご自由にだから、いちおう信じてあげようw
でも、オマ環を理由にするのは情けないw
結局Appleが悪いにして自分のアホな妄想を否定するのはないんだな。さすがだよ

40:デフォルトの名無しさん
19/08/11 18:34:20.63 k+c7cOcw.net
>>39
× >>31
>>35
とりあえずあれだな。馬鹿な妄想で馬鹿にした自分が大馬鹿でしたと言いなさいw

41:デフォルトの名無しさん
19/08/11 18:36:37.47 ++HFlOfG.net
(macから書き込んでるからID変わってるかも)
まずmacの/bin/shはシンボリックリンクではなく、
またファイルサイズが違っているので /bin/bash と完全に同じものでは無いのがわかる
(おそらくビルドオプションの違いだろう)
$ ls -al /bin/sh /bin/bash
-r-xr-xr-x 1 root wheel 618416 5 4 16:04 /bin/bash
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
にもかからわず、同じバージョン番号を名乗っている
(ビルドオプションが違うだけだから当然ともいえるが)
$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
そして想像つく通り、echo -n の挙動が違う
$ /bin/sh -c 'echo -n hello'
-n hello
$ /bin/bash -c 'echo -n hello'
hello%

42:デフォルトの名無しさん
19/08/11 18:37:50.08 k+c7cOcw.net
だろ?そう言ってたんだけど。なに追試してんの?確認できてどうすんの?
Appleが悪いでうやむやに?

43:デフォルトの名無しさん
19/08/11 18:38:56.40 ++HFlOfG.net
>>39
デフォルトっていうのは、OSのデフォルトシェルの話じゃなくて
デフォルトで使ってるシェルって意味だよ。
bash だけで起動するシェル。ログインシェル。

44:デフォルトの名無しさん
19/08/11 18:40:47.34 k+c7cOcw.net
ユーザ作った時のシェルもデフォルトシェルです。てか、そこはいいよ。信じてあげるって言っているんだから
そんなのじゃなくてな、もっと前にお前がレスしたのを始末つけろよ。なんで逃げる?w

45:デフォルトの名無しさん
19/08/11 18:45:07.11 ++HFlOfG.net
>>42
お前の理屈は、
1. 前スレ>>975は、Macを使ってるに違いない!
2. だけど実行したら動かないから、実行してないに違いない!
3. だから、うっかり #/bin/sh にしてしまったに違いない!
4. コピペもしてない!
という根拠ない想像に基づくものだろ?

俺の理屈は「普段から Macでecho -n を使ってる人なら
Macでecho -nが動かないのを知らないはずがない」から
普段、echo -n が動く環境を使ってる。というお前とは正反対の前提なんだよ。
だからecho -nの部分に書き間違いはなく
[[ ]] がbash依存であることを知らなかったという結論

46:デフォルトの名無しさん
19/08/11 18:45:52.21 k+c7cOcw.net
いや、その俺の攻撃はいいから、お前のやらかしたのを始末つけなさい

47:デフォルトの名無しさん
19/08/11 18:47:21.37 2JPwQqrg.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…

48:デフォルトの名無しさん
19/08/11 18:48:15.91 ++HFlOfG.net
まあおかげでPOSIX準拠にするべき理由が一つ増えたじゃないかw
同じbashを使っていても、挙動が違う場合がある
POSIX準拠で書きましょう

49:デフォルトの名無しさん
19/08/11 18:48:32.49 ++HFlOfG.net
>>46
なにもやらかしてないけど?

50:デフォルトの名無しさん
19/08/11 18:48:53.43 ++HFlOfG.net
>>47
bash依存するとそうなるだけw

51:デフォルトの名無しさん
19/08/11 18:49:00.05 k+c7cOcw.net
>>ID:++HFlOfG
なんで逃げる、やらかしたのは明らかだろう。カスなのか?
まあ、想像できるよ、常時偉そうにしたいんだもんな。普通のレス、単純なミスに対してもたかーいところからのいきなりなダメだしとか普通だもんな。そんなお前が自分の過ちを認めたらプライドがズタズタにでもなるんだろう
...カスだなw

52:デフォルトの名無しさん
19/08/11 18:49:53.93 ++HFlOfG.net
宣言
今度から、echo -n を見かけたら、それはPOSIX準拠してないので
printfを使いましょうと書き込むことにする。

53:デフォルトの名無しさん
19/08/11 18:50:32.73 ++HFlOfG.net
>>51
お前、文句言ってるだけじゃんw
やらかしてる部分はどこかを書けば、
やらかしてないという説明をしてあげるよ?

54:デフォルトの名無しさん
19/08/11 18:50:49.35 k+c7cOcw.net
>>49
異常だな。自分に強く言われたらすぐ反発するくせに。自分で何をどう言っているのかわかってないのか
てかそういうフリなんだろうな。>>51のままだな

55:デフォルトの名無しさん
19/08/11 18:52:32.37 k+c7cOcw.net
>>53
自分のレスを見直しなさい
自分の過ちがわからないのによく高慢に他人の過ちをあげつらえられるなあ
まあ、もうわかった。この繰り返ししかないだろうから、カスだと確定します

56:デフォルトの名無しさん
19/08/11 18:54:05.02 ++HFlOfG.net
URLリンク(hints.macworld.com)
> This is not a bug. As OS X 10.5 is now certified to follow the Single Unix Specification, its /bin/sh and echo builtin now follow the specification
なるほど。OSX 10.5から仕様変更されたっぽい。
これAppleがオレオレパッチ当ててるのでは?
bash標準ではなさそうな気がする。
流石にAppleのオレオレパッチまではしらんてw

57:デフォルトの名無しさん
19/08/11 18:54:43.01 ++HFlOfG.net
な?さっきから俺はシェルスクリプトの話題をしてる。
ID:k+c7cOcw は、俺の話題しかしてない(笑)

58:デフォルトの名無しさん
19/08/11 18:55:27.94 k+c7cOcw.net
逃げるばっか。自分でMacも使ってるそのためにもPOSIXとかのたまってたのに

59:デフォルトの名無しさん
19/08/11 18:56:17.71 ++HFlOfG.net
10.4まではmacOSのbashは-nを改行なしと認識していたそうだ
> In fact, I tried echo -n from bash and sh on my 10.4 system and my Linux system and in all cases,
> the -n was recognised as a switch. On both of those machines, /bin/sh and /bin/bash were identical (in fact, on the Linux box, /bin/sh was a symlink).

60:デフォルトの名無しさん
19/08/11 18:56:22.80 k+c7cOcw.net
>>57
俺はとうに終わってるもん。お前もその俺のレスにレスしてんですけど?さすがだな

61:デフォルトの名無しさん
19/08/11 18:56:59.72 k+c7cOcw.net
(ごまかしたくてしょうがないのがアリアリ)

62:デフォルトの名無しさん
19/08/11 18:58:37.20 ++HFlOfG.net
>>58
古いbashはLinuxで検証してるからね。
macでHomebrew使わないってありえんでしょ?
macではbashも古い3.2.57じゃなくて5.0.7を使ってるよ。

63:デフォルトの名無しさん
19/08/11 18:59:22.71 ++HFlOfG.net
>>60
> お前もその俺のレスにレスしてんですけど?さすがだな
誰にレスしてるかではなくてレスの内容な。
お前は俺の話しかしてないけど、
俺は皆に役立つようにシェルの話をしてる。

64:デフォルトの名無しさん
19/08/11 19:03:26.79 k+c7cOcw.net
>>57と言っておいて我慢できなくて>>62なのか?>>58もお前だけの話題だけど?そのレスもオマ環の説明って、お前だけの話題だろうw
オマ環でそういうことをしていても、macOS使ってるなら/bin/shがbashだとわかっているだろうに。なぜ/bin/shをbashにする環境作るのがとかのたまうのかわからん。たいした使ってない=Macももただ並べただけだなという「俺の印象」w
てか、そのオマ環を理由にするのは辞めなさい、いつもの高慢なお前には情けないw

65:デフォルトの名無しさん
19/08/11 19:04:18.13 k+c7cOcw.net
>>63
意味わからんwさすがだな。POSIX原理主義者はやっぱり変なヤツと思うことにするぞw

66:デフォルトの名無しさん
19/08/11 19:05:17.46 k+c7cOcw.net
ああ、やらかしたのをうやむやにするためにか...なるほど

67:デフォルトの名無しさん
19/08/11 19:06:30.10 ++HFlOfG.net
確認取れた。やっぱり-nを改行なしと認識しないのは、bashの動きではなく
Appleによるパッチみたいだ
URLリンク(hints.macworld.com) の下の方に書いてあるけど
COMMAND_MODE=legacy /bin/sh -c 'echo -n hello'
と書いたら-nを改行なしオプションと認識した(legacy 笑)
この COMMAND_MODE は bashの機能ではなくAppleが用意したもの
URLリンク(developer.apple.com)
macOS特有の動きだから、それを「bashでは」いうのはおかしいね。

68:デフォルトの名無しさん
19/08/11 19:09:29.22 ++HFlOfG.net
>>64
お前が俺にグダグダ言ってる間に答えを見つけたよ。
オマ環じゃなくて、macOS環境
お前は、bashは-nを認識しない(そのまま-nと出力される)と言っていたが、
それが間違いだとわかったよ。
bashは-nを改行なしオプションとして認識するのは正しい。(俺が今までLinuxで検証していたとおり)
ただしAppleがビルドした改変版bashでは、 Single Unix Specificationに準拠するために
POSIXでは規定されてない-nをそのまま出力されるようになってる。
まあこういう違いがあるから、やっぱりPOSIX準拠は大切だね。

69:デフォルトの名無しさん
19/08/11 19:10:38.51 k+c7cOcw.net
>>67
俺のレスをよく読もうな。書いてからお前がイチャモンwつけたんだからな
Macを持ってないとかならまだ許すが、自分で自らそのためにもPOSIXというひとつに挙げておいて、確認もせず、オマ環を自分で作ってそれも忘れ、
いろいろ忘れ、トンチキな妄想を吐いていたにもかかわらず、なかったことに&なにか知らんがwごまかしとしか思えないまったく真摯な態度が皆無なヤツです、いつもの高慢ちきは
と(改めてw)証明wできたので、満足しとくわw

70:デフォルトの名無しさん
19/08/11 19:12:20.49 k+c7cOcw.net
>>68
何を言いたいのかわからんが、現象は変わらない。そしてお前の間違いは変わらない
な?こういうやつだな、やっぱり

71:デフォルトの名無しさん
19/08/11 19:14:12.80 ++HFlOfG.net
>>64
> macOS使ってるなら/bin/shがbashだとわかっているだろうに。なぜ/bin/shをbashにする環境作るのがとかのたまうのかわからん。
お前、macOSしかbash動く環境知らんのか?
bashはGNUプロジェクトで作られたもので、GNU環境(例 Linux)が一番に確認すべき環境だろ
bashでの動きの話をしてるんだから、Linuxで検証するのが一番手っ取り早い。macOSの話を持ち出したのは「お前が」「あとからだ」
Debinaでは/bin/shの実体はdashなんだから、/bin/shの実体がbashの場合の挙動を確認するには環境を作らなければいけない
もっとも、macOSでは、/bin/shは/bin/bashへのシンボリックリンクではなく
本物のbashでもなく、Appleによる改変版bashだったわけだけど

72:デフォルトの名無しさん
19/08/11 19:16:41.36 k+c7cOcw.net
>>71
トンチンカンすぎるな。めちゃくちゃ。最後だぞw安心しろww
/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
Macあるやん、macOS使ってお前ほどの自称知っている人なら知ってるハズだろ
だよ。なにをトンチンカンなことを。まあ、わかるよ、ごまかすのに必死なのは。アホらしい

73:デフォルトの名無しさん
19/08/11 19:18:47.82 dSI5JGW8.net
相手は神様なんだから敬ってやれよ
> From: [36] デフォルトの名無しさん <sage>
> Date: 2019/08/11(日) 16:10:55.15 ID:++HFlOfG
>
> 現実世界では私は神なのだ

74:デフォルトの名無しさん
19/08/11 19:19:19.67 ++HFlOfG.net
>>69
> 確認もせず、オマ環を自分で作ってそれも忘れ、
前スレ>>975でコードが書かれてから
お前は「macOS環境のbash」とは一言も言わず、
bashの場合としか言っておらず、
>>996で書いた実行ログの中にapple-darwinという文字が含まれていたのを
俺が見つけたっていう事実を忘れてないか?w

75:デフォルトの名無しさん
19/08/11 19:19:54.10 k+c7cOcw.net
>>73
なにそれww
オモロイとおもって書いたのかな?マジだったらオモロイんだけど

76:デフォルトの名無しさん
19/08/11 19:20:19.99 ++HFlOfG.net
>>72
> /bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
> Macあるやん、
Macでは/bin/shの実体は/bin/bashではない。バイナリが違ってる。
ってさっき書かなかったか?

77:デフォルトの名無しさん
19/08/11 19:21:29.72 ++HFlOfG.net
>>75
それはその数個上のレスを見ればわかるよ。
「現実世界では俺は優れたプログラマ」(といわれても証拠ないしなーw)
とか言ってるやつがいたから、そいつに対するレス。

78:デフォルトの名無しさん
19/08/11 19:23:55.89 k+c7cOcw.net
>>73
そのひとレスなのね。まあ、なんだ...まあ、いや、わからんwww
まあ、いいや

79:デフォルトの名無しさん
19/08/11 19:24:54.08 ++HFlOfG.net
この話スレ建てる前に知りたかったなー。
 macOS (10.14以前), は /bin/sh の実体が (Apple改変版)bash なので*特に*注意
って書き直したい

80:デフォルトの名無しさん
19/08/11 19:35:35.33 ++HFlOfG.net
これはひどいwww
URLリンク(moriyoshi.)はてなぶろぐ.com/entry/20090208/1234108045
> Leopard の「ターミナル」で、/bin/sh の echo -n がおかしい挙動を示


81:します。 > > sh-3.2$ echo -n foo > -n foo > sh-3.2$ > 分ったこと: > > /bin/sh は bash だが、/bin/bash とは違うもの > which echo すると /bin/echo と言われるが、built-in のようだ > iTerm から起動すると echo -n はちゃんと動く > ターミナルで /bin/sh の echo は、iBCS2 コンパチとして動くのでしょうか? > google しても解決方法は分りませんでした。ご存知の方は教えて下さい。(_ _) > ... > > kzysk: なぜか iTerm は環境変数 COMMAND_MODE=legacy, ターミナルは unix2003 になっていて、 > その違いで sh 上の echo の動きがかわるらしいです。



82:デフォルトの名無しさん
19/08/11 22:27:57.25 tjpar2Yg.net
やっぱりどこでも動くシェルスクリプトなんて妄想なんだねw

83:デフォルトの名無しさん
19/08/11 22:34:19.90 owKtPG/2.net
POSIX準拠を意識してない未熟ものにとってはそうなんだろうな

84:デフォルトの名無しさん
19/08/11 22:39:31.82 owKtPG/2.net
POSIX準拠を意識している者にとっては、-nが使えないとか
想定の範囲内だからね。yashとか使えないわけだし。
だから最初から-nを使うぐらいならprintfを使ってる。
POSIX準拠でコードを書いてる人にとっては何ら問題ないわけ

85:デフォルトの名無しさん
19/08/11 22:58:12.04 tux8oNSc.net
あれだけアホ晒しても僕偉いww

86:デフォルトの名無しさん
19/08/11 23:02:56.27 owKtPG/2.net
俺が偉く見えてしまうのは、あんたの主観だから俺にはどうしようもないw

87:デフォルトの名無しさん
19/08/11 23:05:15.27 tux8oNSc.net
>POSIX準拠を意識してない未熟もの
不特定多数が含まれるというのがわからないのね
さすがあれだけアホ晒しても僕偉い人ww

88:デフォルトの名無しさん
19/08/11 23:08:19.13 owKtPG/2.net
不特定多数が含まれるからなんだっていうんだろう?

89:デフォルトの名無しさん
19/08/11 23:10:58.42 tux8oNSc.net
すげえよっ、さすがあれだけアホ晒しても僕偉い人ww脳の中身理解不能

90:デフォルトの名無しさん
19/08/12 00:45:59.42 OLWOasI9.net
なんでスレ進んでたのかと思ったらまたはしゃいでたのか

91:デフォルトの名無しさん
19/08/12 00:50:54.61 kdU0FwTT.net
神様なんだろ。許してやれ
(しかしネットは怖いな。やらかしたことがほぼ一生残る。)

92:デフォルトの名無しさん
19/08/12 00:56:58.46 LRX4Utg1.net
なにやらかしたの?

93:デフォルトの名無しさん
19/08/12 01:16:22.35 Mlg83N6h.net
よくわからん。揚げ足で騒いでるように見える。

94:デフォルトの名無しさん
19/08/12 01:48:53.53 kdU0FwTT.net
揚げ足というか、単に普通の失敗(理解不足)なんだけどな。
謝らないのが問題だった。
素直に謝罪しておけばよかったものを…。

95:デフォルトの名無しさん
19/08/12 02:03:12.93 tYO0tRVG.net
謝罪しろって韓国かよw

96:デフォルトの名無しさん
19/08/12 02:05:47.65 U5E/4roV.net
Mac特有の挙動(UNIXの要求に合わせるためにAppleが独自で変更してる)なのに
それに気づかないで、bashでは-nに対応してないって騒いでたんだっけ?

97:デフォルトの名無しさん
19/08/12 03:01:38.96 vrbZPf3l.net
そう。挙句の果てに、Macでテストしてなかった
お前が悪いとか言って荒らし始めた。

98:デフォルトの名無しさん
19/08/12 05:08:02.14 kdU0FwTT.net
自分に都合が悪くなるとすぐ韓国とかよく分からんこと持ちだして話を逸らすあたり,
これは重症っすね……。

99:デフォルトの名無しさん
19/08/12 08:13:29.23 TQ9KMPr7.net
これは人が離れて行くのも無理はないな
・自分の誤りを絶対に認めない
・人間関係は上下の主従関係のみで平等の概念がない
どこかで見たことあるような...おや、誰か来たようだ

100:デフォルトの名無しさん
19/08/12 08:14:46.28 d52ffprB.net
たしか前スレでも、質問してる側が下なんだから
回答する側に対してへりくだれ的なことを言ってたよな

101:デフォルトの名無しさん
19/08/12 08:16:14.37 d52ffprB.net
これだな。平等の概念がない
609 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/07(水) 12:45:25.69 ID:WK8NJ3/V [18/28]
>>608
回答者のほうが偉いみたいな考え方。
質問者と回答者は対等です。
610 返信:デフォルトの名無しさん[] 投稿日:2019/08/07(水) 13:00:34.72 ID:9POPBXN5 [8/13]
>>609
対等じゃないよ。金を出す側と受け取る側と同じだもの。同じわけがないじゃん。
君はなんでそんな現実と食い違う思想を持ってるんだ?それでは人とのトラブルになるだけで世の中渡っていけんだろう。

102:デフォルトの名無しさん
19/08/12 08:22:26.39 TQ9KMPr7.net
あ、ひとつ忘れてた
・論点のすり替えが上手

103:デフォルトの名無しさん
19/08/12 08:38:45.76 HKovfvTl.net
またこいつは朝からシェルスクリプト「ではない」話をしてんのか

104:デフォルトの名無しさん
19/08/12 11:05:57.03 kdU0FwTT.net
そうせざるえないほど酷い人がいるからね。
このスレの住人は結構優しいんじゃないかな。
人格欠陥者を罵しったり無視することは簡単だけど,
その欠点を皆で指摘してくれるなんてかなり貴重だと思う。
まあどうせ当の本人は自分に対する攻撃としか捉えず,
都合の悪いことには目を塞ぐ能力をフル活用して目を翥すんだろうが。

105:デフォルトの名無しさん
19/08/12 11:48:18.69 7x51tVmW.net
bash 依存だけどこんな関数を作って使ってた事もあった
function _join {
local IFS="$1"; shift; echo "$*"
}
bash$ _join , {1..10}
1,2,3,4,5,6,7,8,9,10

106:デフォルトの名無しさん
19/08/12 11:51:12.48 OLWOasI9.net
いくらID変えても同じ言動なのがいよね
欲を言えばコテを付けてくれれば処分しやすいんだけど

107:デフォルトの名無しさん
19/08/12 12:15:08.81 kdU0FwTT.net
ていうか3スレくらい前からワッチョイ導入しようという話がチョイチョイ出てはいる。

108:デフォルトの名無しさん
19/08/12 15:40:50.17 FEiQT6YL.net
>>104
それをbash依存にしないのは簡単だよ
localの代わりにサブシェルを使えばいい
_join {
(IFS=$1; shift; echo "$*")
}
ちなみにlocalはPOSIX準拠じゃないけど、
local もしくは localと同等のことができるtypeset のどちらかが
POSIX準拠シェルのすべてに(おそらく)搭載されてるから
2パターン作ることになるが、サブシェルを使わずに作ることも可能
面倒だからOLDIFSに対比させるのが楽だけどねw

109:デフォルトの名無しさん
19/08/12 16:10:50.92 7x51tVmW.net
_join () (IFS=$1; shift; echo "$*")
でいいんじゃね

110:デフォルトの名無しさん
19/08/12 16:15:47.05 FEiQT6YL.net
>>108
その書式、使えないシェルがあるんだよ。

111:デフォルトの名無しさん
19/08/12 16:18:53.19 7x51tVmW.net
IFSを使う場合はデリミタに1文字しか使えないので
その後はこんな↓ふうに書き直した(けど最近は全く使うことがない)
function _join {
local d="$1"; shift; printf '%s' "$1"; shift;
printf '%s' "${@/#/$d}"; echo;
}
$ _join '->' {{1..4},5,{4..1..-1}}
1->2->3->4->5->4->3->2->1

112:デフォルトの名無しさん
19/08/12 16:20:03.86 FEiQT6YL.net
あ、でも今調べたら相当古いbashだけみたい。ならいいか

113:デフォルトの名無しさん
19/08/12 16:20:31.00 VzSWusfF.net
shellcheck のような書き方を指導する奴で
POSIX準拠の書き方でないところをチェックするツールでもあるのか?
滅茶苦茶詳しすぎる

114:デフォルトの名無しさん
19/08/12 16:37:37.51 FEiQT6YL.net
>>110
それをbash依存なくするにはループだろうな
たぶん誰でもわかると思うのでコードは省略w
local変数使わなくても行けるかも
>>112
shellcheck 以外だと使ったことがないけど shfmt
・・・でチェックできるのか知らない。使い方がよくわからないw
shfmtという名前を忘れたのでぐぐったら bash依存チェックするツールがあったよw
URLリンク(sourceforge.net)
URLリンク(github.com)
俺はもうだいたい覚えたね。POSIX準拠の書き方を調べたと言うよりも
とあるシェルで動かない。なんでや?POSIX準拠じゃないんかい。の繰り返しで。
だからPOSIX準拠だけど、シェルのバグで動かないっていうのも頭に入ってる。

115:デフォルトの名無しさん
19/08/12 16:53:21.75 FEiQT6YL.net
あ、たぶん>>112の疑問に答えて


116:ないw なんで古いbashで動かないのかがわかったかと言うと 古いバージョンのシェルをビルドしたテスト環境を用意していて 単に実行して確認しただけの話。



117:デフォルトの名無しさん
19/08/13 12:23:48.45 PvshuRsa.net
$ ksh -c 'echo $KSH_VERSION'
Version AJM 93u+ 2012-08-01
これのAJMはなんだろう?と思ってググったけど、
コンパイル時のオプションってことでいいのかな?
URLリンク(www.in-ulm.de)
After "Version" now there is a concatenation of letters indicating compile time options:
A SHOPT_AUDIT /* keyboard logging */
B SHOPT_BASH /* bash compatibility code */
L SHOPT_ACCT /* accounting */
M SHOPT_MULTIBYTE /* multibyte character handling */
Jはこれ?
J SHOPT_COSHELL /* job pools */

118:デフォルトの名無しさん
19/08/15 23:08:43.05 xN8IaB/K.net
前スレでboshのビルドができないと言っていた人へ
2019-08-13版でビルドできるようになってます。
2019-06-13 OK
2019-07-15 NG
2019-07-22 NG
2019-08-13 OK

119:デフォルトの名無しさん
19/08/17 20:53:09.43 R5VCpMP+.net
POSIXで定義されてるbatchとかatとかって使ってる?
俺は可搬性を失なう覚悟でcron使ってるけど

120:デフォルトの名無しさん
19/08/17 21:03:17.18 He41kTu9.net
pythonで mycron.pyを書いた
python さえ動けば

121:デフォルトの名無しさん
19/08/17 21:23:22.11 g4f/iCif.net
>>117
atは昔使ったことがあるけど、覚えてないレベル
batchは使ったこと無いな。
POSIXなんだよな。なんでかPOSIXの範囲にこんなものを
含めちゃっていいのか?って気がしてるw

122:デフォルトの名無しさん
19/08/17 21:26:52.13 g4f/iCif.net
ん?cronはPOSIXじゃないけど、crontabはPOSIXなのか?
これはコマンドは決まってるけど、それを実現しているものは決まってないってことなのかな?

123:デフォルトの名無しさん
19/08/17 21:30:38.30 R5VCpMP+.net
>>120
多分manと同じ感覚なんじゃないかな?
manというコマンドは決まってるけどroffの仕様は決まっていない。

124:デフォルトの名無しさん
19/08/18 13:02:29.86 zqR8kD3Y.net
>>119
SCCSまで含めようという動きがあるんだから
ジョブ管理くらいあってもおかしくないw
それがPOSIXにほんとうに定めるべきコマンドなのか
っていう疑念は拭えないけど。

125:デフォルトの名無しさん
19/08/18 13:29:09.33 KK6bG3/n.net
いつまでも完成しそうもない開発系?のツールなんかより
dateとかsortとか基本形のコマンドのオプションを拡張すればいいのに
だからいつまで経ってもMacのコマンドは貧弱でhomebrewでcoreutilsを入れなければいけなくなる
LinuxをバンドルしたWSLは便利になった。

126:デフォルトの名無しさん
19/08/18 19:00:47.29 zqR8kD3Y.net
単に拡張すりゃいいってもんじゃない。
どのシステムでも使えることを優先すべき。

127:デフォルトの名無しさん
19/08/19 03:40:41.24 ZZoimR+D.net
>>123
> dateとかsortとか基本形のコマンドのオプションを拡張すればいいのに
それな。 date +%s がPOSIX準拠じゃないとかびっくりやわw
unix timeどうすりゃいいねん。

128:デフォルトの名無しさん
19/08/19 04:03:23.22 M9mgefHn.net
>>124
拡張っていうか仕様の標準化だな
POSIXScript2020 とかいう仕様を作って
各社に対応を促す。
新POSIXScript2020に準拠していれば
どこでも同じように動く

129:デフォルトの名無しさん
19/08/19 07:34:11.92 JcVwKxxm.net
>>126
それに対応することによる各社のメリットとは?

130:デフォルトの名無しさん
19/08/19 08:34:19.51 xlQPwL5


131:+.net



132:デフォルトの名無しさん
19/08/19 08:35:48.66 xlQPwL5+.net
ていうか言語仕様の素早い更新・機能追加が好きならPython使えば?
過去互換性も同じくらい重視したいならC#-shell

133:デフォルトの名無しさん
19/08/19 09:33:40.73 W8+ngSHm.net
>>127
なんのためにPOSIXが出来て、みんなそれに対応してると思ってるの?

134:デフォルトの名無しさん
19/08/19 09:48:50.15 JcVwKxxm.net
>>130
当時と現在の状況の違いが理解できない理想主義の人?

135:デフォルトの名無しさん
19/08/19 09:51:47.61 W/U4wDij.net
現在ってまだPOSIX改定されてるでしょ?
歩みが遅いことを批判するのは正しいが、
そこにPOSIXはもういらないっていうのは、
POSIXの存在を否定してるよ。

136:デフォルトの名無しさん
19/08/19 09:54:30.67 xlQPwL5+.net
>>132
POSIX要らないって少なくともこのスレでは誰も言ってないけど
いったい誰と戦ってるの?

137:デフォルトの名無しさん
19/08/19 09:59:46.47 W/U4wDij.net
>>127と戦ってるんだけど?
結論としては、POSIXは必要で、POSIXは改定されてる。
新しいPOSIXに対応する各社のメリットがわからないなんてなw

138:デフォルトの名無しさん
19/08/19 10:13:25.39 U/sDEGN5.net
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

139:デフォルトの名無しさん
19/08/19 11:28:24.99 xlQPwL5+.net
文体がちょっと違うから危うく荒しに構うところだった。
いつものチガイか。

140:デフォルトの名無しさん
19/08/19 11:36:19.43 JcVwKxxm.net
>>134
POSIX要らないとか一言も書いてないのだが
なんか変な妄想にとらわれてる人なの?いつもの

141:デフォルトの名無しさん
19/08/19 11:40:44.54 W/U4wDij.net
>>137
そっちじゃないよw
新しいPOSIXに対応するメリットがわからないんでしょ?

142:デフォルトの名無しさん
19/08/19 12:46:41.76 IzREAmBO.net
シェル単体の交換可能性を担保したところで出来ることはたかが知れてる。
システムとして実用的なレベルまで規格拡張しないと使いものにならない。
現状のPOSIXは最低限のI/F仕様を規格化するだけの中途半端な規格だ。
将来的にネットワーク、ハードウェア管理、セキュリティなどシステムとしての仕様が標準化され、全てのシステムがそれに準拠するまでは、POSIXに固執する必要性は無いと言っていい。
もちろん、可能な範囲で可搬性を追求することは間違いではないと思うぞ。現状では限界があるということだ。

143:デフォルトの名無しさん
19/08/19 12:51:57.60 4iryI+Qn.net
現実として問題になってるのは、半ば当たり前のように書かれる
Linuxで動くコマンドが、macOSで動かないことだよな
ググって、なるほどこれでできるのか、って思ってもmacOSで動かないのは問題

144:デフォルトの名無しさん
19/08/19 12:52:53.15 4iryI+Qn.net
>>139
POSIXはシェルだけを決めてるものじゃないよ。
コマンドとそのオプションも決めてる。

145:デフォルトの名無しさん
19/08/19 12:58:21.94 IzREAmBO.net
>>141
シェル「だけ」とは言っていない。
ここはシェルスクリプトのスレだから、シェルについて言っている。
POSIXについては>>2を読めば分かる。

146:デフォルトの名無しさん
19/08/19 13:02:42.41 4iryI+Qn.net
>>142
主張がよくわからないんだけど
「シェル単体の交換可能性を担保したところで出来ることはたかが知れてる。」から、
現状のPOSIXは中途半端で、もっといいものにするために新しいPOSIXを
規格化するべきだって言ってるってことあってる?

147:デフォルトの名無しさん
19/08/19 13:23:29.26 oONnFCD4.net
POSIXのような標準はそう簡単には変更できないだろ。バージョンによるになるから
そして、ツールを作るのは大なり小なり思想があってやっているんで、言うようなできる最大のものに合わせるなんてなりっこない
文句なり言うなら、POSIXにではなくBSDに言う方が現実的だし、文句言うくらいな自分で実装してBSDに上げればいいだろう。上げても却下されるとかあるかもだがw
言っているのは単にWebで探した事例がLinuxでBSDだと動かないってのだけだもん

148:デフォルトの名無しさん
19/08/19 13:40:48.28 4iryI+Qn.net
>>144
難しく考えすぎでしょ。すでにある実装を採用すればいいだけ
思想なんかは、既に実装されてる時点で問題ないということだし。
POSIXにではなくBSDに言う方が現実的というけどBSDの現状知ってる?
すでにgreadlinkとかgtarとか結局GNU版を実装しちゃってるの。(その逆は聞かない)
そういう二重開発をなくすためにも、今の実装(の一部)をPOSIXにしてしまうべきだと思うね

149:デフォルトの名無しさん
19/08/19 13:51:36.11 oONnFCD4.net
>>145
その採用がだよ。やりとり見てみ。はいそうですねでは進んでないから
それはいらないとかふつうにあるぞ。POSIXに限らず
何言ってるの?単にBSDにGNU coreutilsのパッケージがあって、それが入ることもあるってだけだよ。gって自分で付けて気づかないの?GNU coreutilsが入っているのが嫌という人も居るようだけど

150:デフォルトの名無しさん
19/08/19 13:53:39.09 4iryI+Qn.net
>>146
> はいそうですねでは進んでないから
? 思想とかなんとか困難な道を乗り越えて見事、採用されたものを
POSIXにも入れればいいだけって言ってるんだけど

151:デフォルトの名無しさん
19/08/19 14:01:04.44 oONnFCD4.net
何を言いたいのかさっぱり
BSDも標準では入ってないぞ GNU coreutils は。何かそれを必要としたパッケージがあってそれにともないだろう
パッケージは誰かが作ってそれなりに利用されるのならわりと簡単にだぞ?パッケージだからな。必要な人は入れるというだけの

152:デフォルトの名無しさん
19/08/19 17:39:47.54 xlQPwL5+.net
・POSIXに準拠することにはメリットがある
↑これは俺もそう思うけど(正しいかどうかは別にして)
・今のPOSIXでは不十分なので,規格を拡張して,各社にそれを追従するよう促すべきだ
↑これは違うと思う。POSIXの「不便さ」は「どこでも動く」ことの引き換えであることを忘れてはいけいない(ルポ風)

153:デフォルトの名無しさん
19/08/19 17:40:43.60 xlQPwL5+.net
cat >>149 | sed -e 's/いけいない/いけない/'

154:デフォルトの名無しさん
19/08/19 18:49:04.48 0HwI7cO5.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね。

155:デフォルトの名無しさん
19/08/19 19:12:44.68 peefgVfy.net
Write once, Bug anywhere.

156:デフォルトの名無しさん
19/08/19 19:43:03.92 6nSAEgtv.net
>>149
でも「今のPOSIXでは不十分なので,規格を拡張して」は
遅いながらも今のPOSIX団体がやってることですよ?
POSIX団体がやってることを批判するんですか?

157:デフォルトの名無しさん
19/08/19 20:19:55.37 WiF5XT2w.net
bashで長いシェル書いてるといつもたくさんファイルを生成してしまうんだが上手い具合に生成しなくて済む方法ってある?

158:デフォルトの名無しさん
19/08/19 20:22:05.55 oWmB5KZ/.net
>>154
たくさんファイルってどういうこと?

159:蟻人間
19/08/19 20:25:47.56 GYeBbzEk.net
>>154
パイプ。リダイレクション。

160:デフォルトの名無しさん
19/08/19 20:28:19.59 WiF5XT2w.net
>>155
どっかからデータをとってくる
raw_file(最初)
user_file
user_and_id_file
format_file(完成形)
めっちゃテキトーに書いたけどこんな感じで4つぐらい作られてしまう
rmで消すのって有りなのかな

161:デフォルトの名無しさん
19/08/19 20:29:18.05 oWmB5KZ/.net
はぁ? と言われましても、
無駄なら無駄なところをなくせ、必要ならそうするしかないで終わるんだが?
それじゃ全く何もわからないよ

162:デフォルトの名無しさん
19/08/19 20:33:15.52 WiF5XT2w.net
>>156
参考になりました。ベストアンサーあげます

163:デフォルトの名無しさん
19/08/19 20:50:25.65 JcVwKxxm.net
>>149
おれは、促すまではいいと思うが、こんな所での妄想レベルの機能なんか
促されたからってそうホイホイ実装しないだろうと思うんだな

164:デフォルトの名無しさん
19/08/19 20:53:38.13 PiISpjsD.net
>>160
人の話ちゃんと聞こうぜ?
誰も妄想レベルの機能を言っちゃいない。
既に実装済みの機能をPOSIXで標準化しようって話をしてる。

165:デフォルトの名無しさん
19/08/19 20:58:54.83 QrnBNgWe.net
pasteで処理の結果をくっつける方法ってありますか?
処理A、処理B、処理Cの計3つでファイルを作成せずにくっつけたいです。

166:デフォルトの名無しさん
19/08/19 21:02:40.84 WV8MsfnG.net
Xxx <(Yyy) <(Zzz)
こんな感じのがあったような?

167:デフォルトの名無しさん
19/08/19 21:03:35.55 PiISpjsD.net
>>162
pasteは複数のファイルを受け付ける
pasterは標準入力からも受け付ける
この二つのどちらかまたは両方を使えばでできるでしょ?

168:デフォルトの名無しさん
19/08/19 21:03:42.78 peefgVfy.net
プロセス置換でできるかな?

169:デフォルトの名無しさん
19/08/19 21:04:17.45 PiISpjsD.net
あ、入力元はファイルじゃないのか?

170:デフォルトの名無しさん
19/08/19 21:06:17.42 xlQPwL5+.net
>>163
BashやZshに依存してもいいならこれ。

171:デフォルトの名無しさん
19/08/19 21:08:14.71 PiISpjsD.net
pasteは複数の標準入力を受け付けるみたいね
printf '%s\n' a b c d e f g | paste - - -
a b c
d e f
g
だから処理A、処理B、処理Cをそれぞれ1行ずつ
出力できるならくっつけられるね。

172:デフォルトの名無しさん
19/08/19 21:12:53.53 PiISpjsD.net
あとは処理A、処理B、処理Cの順でデータを出力するなら、
それぞれ変数に入れといて、1行ずつとりだすとか。
まあできなくはない。

173:デフォルトの名無しさん
19/08/19 21:26:09.66 PiISpjsD.net
>>167
> BashやZshに依存してもいいならこれ。
どこでも動かないのはPOSIXに>>163が入ってないからだね

174:デフォルトの名無しさん
19/08/19 21:32:21.04 R3NGICj0.net
>>154-159
一時ファイルとか、メモリ内ファイルとかは?

175:デフォルトの名無しさん
19/08/19 21:38:04.83 PiISpjsD.net
>>162
あ、nlとsort使えばいけるじゃん。
(
処理Aを出力 | nl -i3 # 1, 4, 7 と行番号をつける
処理Bを出力 | nl -i3 -v2 # 2, 5, 8, と行番号をつける
処理Cを出力 | nl -i3 -v3 # 3, 6, 9, と行番号をつける
) | sort -n | paste - - - | 行番号を削除
これでできないかな?
行番号を消すのは、nlの-sで区切り記号をつけられるから、
cutかsedでやればいいかな? 1行目が1ってわかってるから、
行番号の文字数もわかるので、あとはどうにかw

176:デフォルトの名無しさん
19/08/19 21:52:44.53 PiISpjsD.net
こんな感じかな?
a() { printf '%s\n' a b c d e; }
b() { printf '%s\n' A B C D E; }
c() { printf '%s\n' 1 2 3 4 5; }
{
a | nl -i3 -v1 -s:
b | nl -i3 -v2 -s:
c | nl -i3 -v3 -s:
} | sort -n | cut -d: -f2- | paste - - -
出力
a A 1
b B 2
c C 3
d D 4
e E 5

177:デフォルトの名無しさん
19/08/20 07:40:59.29 Gkd3xMH4.net
そのsortって安定だっけ。
じゃなかったら処理結果が入れ替わるおそれない?

178:デフォルトの名無しさん
19/08/20 08:07:31.90 JOMXhFk+.net
>>174
安定になる条件と行番号の関係について
考えてみようか?

179:デフォルトの名無しさん
19/08/20 08:24:06.78 Gkd3xMH4.net
POSIX sortだと-s(=stable sortのs)オプションが提供されてないので
どう足掻いても安定にはならんな。
「たまたま」順番が変化しない場合もあるやもしれんが。

180:デフォルトの名無しさん
19/08/20 08:37:08.94 JOMXhFk+.net
なんで重複しない行番号の順にソートして並びが入れ替わるんだよw

181:デフォルトの名無しさん
19/08/20 12:54:26.88 /fB0Ptq3.net
>>176
「安定」の意味分かって書いてる?

182:デフォルトの名無しさん
19/08/20 13:41:04.53 tzbk8R3g.net
安定の書き込みクオリティ

183:デフォルトの名無しさん
19/08/20 13:47:15.01 /V4ccaND.net
シェルスクリプトってテキストファイルこねくり回すくらいしかできないんだよな

184:デフォルトの名無しさん
19/08/20 13:52:13.54 I7f/WloD.net
それで十分ですよ

185:デフォルトの名無しさん
19/08/20 17:13:37.74 Gkd3xMH4.net
バイナリファイル扱えるスクリプト言語ってある?
Pythonとか?

186:デフォルトの名無しさん
19/08/20 17:15:25.76 OyLrpvkx.net
使えないの挙げたほうが速いのでは?

187:デフォルトの名無しさん
19/08/20 17:32:48.20 30Dp6unL.net
使えるほうが多いのか?

188:デフォルトの名無しさん
19/08/20 17:47:53.72 CuOLtXP9.net
シェルスクリプトでバイナリを扱いたければ
odを使うしか無いだろう。
zshはNULLを扱えたはずだが、
bashやそれ以外はNULLを扱えない。
例のawkおじさんは、awkスクリプトで頑張ってるようだが
もちろんあれはシェルスクリプトではない

189:デフォルトの名無しさん
19/08/20 17:56:41.96 /V4ccaND.net
>>182
扱えるというのはバイナリファイルの編集ができるってことだよね

190:デフォルトの名無しさん
19/08/20 17:57:11.37 Gkd3xMH4.net
無知ですまんがAWKおじさんってだれ?
なんか否定的な書き方だけど悪名高いコテハン?

191:デフォルトの名無しさん
19/08/20 18:00:14.90 CuOLtXP9.net
>>187
自称シェルスクリプトで色々頑張ってる人。ググればわかる。
悪名高いコテハンではないが、俺的にはあのセンスが受け入れられない。
色々頑張ってるが、コードを見るとawkスクリプトを
シェルスクリプトで生成して、メインの処理はawkで
実行してるのでダサい

192:デフォルトの名無しさん
19/08/20 18:01:35.41 /V4ccaND.net
>>187
URLリンク(github.com)

193:デフォルトの名無しさん
19/08/20 18:05:24.00 CuOLtXP9.net
odの他にhexdumpとかでもできるがhexdumpはPOSIXじゃない。
あとbase64もPOSIXじゃない。
あとは出来る可能性があるとすれば uuencode だけど
あれを処理するのは難しいだろうな。

194:デフォルトの名無しさん
19/08/20 18:07:02.56 CuOLtXP9.net
>>187
> なんか否定的な書き方だけど
別に否定はしてない。awkもPOSIX準拠だから物自体はいいけど
シェルスクリプトじゃないよねって話

195:デフォルトの名無しさん
19/08/20 18:10:40.86 Gkd3xMH4.net
>>189
あぁ、この人のことか。ありがとう。
なんかQiitaかどっかでメチャメチャ喧嘩腰のコメントしてた記憶があるわ。
URLリンク(qiita.com)
↑ここのコメントとかかな。
言ってることは正しいのかもしれんが、ちょっと品性に欠けるなぁと思った。

196:デフォルトの名無しさん
19/08/20 18:15:23.89 Gkd3xMH4.net
>>190
実はBase64はPOSIXの範囲でも(簡単に)実現できる。
URLリンク(pubs.opengroup.org)
によればuuencode -m /dev/stdoutこれでほぼbase64コマンドと同じ挙動になる。
ていうか/dev/stdoutってPOSIXで規定されてないのにその肝心の公式が仕様書内で
/dev/stdoutを使っちゃっていいのかねw

197:デフォルトの名無しさん
19/08/20 18:19:45.77 5hgm7I5A.net
>>193
base64をしたいんじゃなくて、base64コマンドはPOSIXじゃないって意味なんだけど
その文章の読めなさ、相変わらずやなw

198:デフォルトの名無しさん
19/08/20 18:23:52.47 PFkWfbQh.net
POSIX、POSIXとか言ってるやつも、AWKおじさん並みのKitty。

199:デフォルトの名無しさん
19/08/20 18:25:32.24 Gkd3xMH4.net
Base64を実現したくはないのにbase64コマンドが必要な状況ってどんなのだろう…?

200:デフォルトの名無しさん
19/08/20 18:27:06.57 5hgm7I5A.net
今シェルスクリプトでバイナリを扱う話してたろうが
そういうとこやで

201:デフォルトの名無しさん
19/08/20 18:41:10.24 Gkd3xMH4.net
こりゃダメだ

202:デフォルトの名無しさん
19/08/20 18:49:07.29 5hgm7I5A.net
ふぅ。アスペに説明しても理解できないかもしれんが(他の人は理解できるだろうから書くけど)
1. シェルスクリプトはテキストを扱えない。という話が発端 (>>180
2. バイナリを扱うにはどうするか?→バイナリをテキストに変換するコマンドを使えば良い
3. POSIXの範囲ではodが最適。hexdumpやbase64コマンドはPOSIXではない
ここまではまともな流れ。
なぜかBase64を実現したいことだと勘違いする>>193
(バイナリ→テキストを実現するための)base64 "コマンド" の話だというと
なぜかBase64を実現したくないのにとか、斜め上のことを言い出す>>196

203:デフォルトの名無しさん
19/08/20 18:52:24.07 /V4ccaND.net
はい解散

204:デフォルトの名無しさん
19/08/20 20:00:45.18 Gkd3xMH4.net
自分の主張をマトモだとか言っちゃう男の人って…

205:デフォルトの名無しさん
19/08/20 20:02:58.01 ar+OimNr.net
こいつ素でやってるのか?w
会話の流れがまともだって言ったら、
今度は主張がまともと言ってるんだと読み間違えやがったw
まあ確かにそのとおりではあるが、
文章はそう読めるはずがないよな

206:デフォルトの名無しさん
19/08/20 20:15:26.86 /fB0Ptq3.net
>>201
そんでsortの何が安定なのかは分かったの?

207:デフォルトの名無しさん
19/08/20 21:24:50.14 Gkd3xMH4.net
sortの話はもう終わったでしょ、お爺ちゃん。

208:デフォルトの名無しさん
19/08/20 21:27:12.41 ar+OimNr.net
>>204
あんた最後になにもレスしてないよね?
お前が間違っていましたってことで終わったの?w

209:デフォルトの名無しさん
19/08/20 21:28:59.99 ar+OimNr.net
176 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:24:06.78 ID:Gkd3xMH4 [2/10]
POSIX sortだと-s(=stable sortのs)オプションが提供されてないので
どう足掻いても安定にはならんな。
「たまたま」順番が変化しない場合もあるやもしれんが。
177 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:37:08.94 ID:JOMXhFk+ [2/2]
なんで重複しない行番号の順にソートして並びが入れ替わるんだよw
178 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 12:54:26.88 ID:/fB0Ptq3 [1/2]
>>176
「安定」の意味分かって書いてる?
179 名前:デフォルトの名無しさん[] 投稿日:2019/08/20(火) 13:41:04.53 ID:tzbk8R3g
安定の書き込みクオリティ

210:デフォルトの名無しさん
19/08/20 21:30:41.86 ar+OimNr.net
ここで、終わったって自分で言ってるから、
ここで\(^o^)/オワタなんだろうなw

211:デフォルトの名無しさん
19/08/20 22:46:08.19 Gkd3xMH4.net
お爺ちゃん怒りの3連レス。そんなに熱くならなくてもいいのに。冷房がもったいないw

212:デフォルトの名無しさん
19/08/20 23:02:20.69 55BxDwsc.net
みっともないな>>204

213:デフォルトの名無しさん
19/08/20 23:39:15.24 I7f/WloD.net
自称「神様」には何を言ってもムダ

214:デフォルトの名無しさん
19/08/21 00:33:27.35 XuzWeGbv.net
自分が常に正しいと思ってる奴にロクな奴はいない

215:デフォルトの名無しさん
19/08/21 02:24:45.15 GZen3C6t.net
>>208
あはは。二代目神様襲名おめでとうw

216:デフォルトの名無しさん
19/08/21 11:27:36.55 eilohrgH.net
思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?
bashだけにある機能の事なら知ってる

217:デフォルトの名無しさん
19/08/21 11:41:07.46 g3Au7XoK.net
ぐぐったら出てくるから

218:デフォルトの名無しさん
19/08/21 11:42:23.31 CWF24/8E.net
別に使いたいわけじゃなくて、ぐぐったらそれがbashスクリプトだったってこと?
じゃあそのbashスクリプトを書いた人はなんでって話になるけど

219:デフォルトの名無しさん
19/08/21 11:43:24.61 CWF24/8E.net
訂正
× そのbashスクリプトを書いた人はなんでって話になるけど
○ そのbashスクリプトを書いた人はなんの機能を使いたくてbashを使っているの?

220:デフォルトの名無しさん
19/08/21 12:37:03.95 +hDHTeft.net
bashしか使わない人がbash依存して何か問題あるのかね
シェルに限らずLinuxしか使わない人が「Windowsでも動く」プログラムを書く必要はないし
(シェアの低い変なコンピュータ使ってる人はその人だけ苦労すればいい)

221:デフォルトの名無しさん
19/08/21 12:38:05.34 tOxptV2F.net
> bashしか使わない人がbash依存して何か問題あるのかね
問題ないよ。なにを目的にbash依存してるのか聞いてるだけ

222:デフォルトの名無しさん
19/08/21 12:58:08.94 23vMmTO3.net
>>218
>>217って言ってるだろう
bashを使い他を使うこともないから、わざわざ他を意識する調べることがないってことだろ

223:デフォルトの名無しさん
19/08/21 13:00:19.86 tOxptV2F.net
>>219
bashのなにかの機能を使いたくてbashにしているわけじゃないってこと?
配列とかbashにしかないなにかの機能を使いたいからbashを使ってるんじゃないの?

224:デフォルトの名無しさん
19/08/21 13:02:07.60 23vMmTO3.net
大多数はそんなこと気にしてないだろう
配列使うにしてもシェルスクリプトで配列使えるか調べ、現在使ってるシェル(大多数がbashだろう)で使えればそう使ってるだけだろう

225:デフォルトの名無しさん
19/08/21 13:05:16.74 tOxptV2F.net
なんかそれだとbashにする理由はないのに
bash依存してるって言ってるように見えるなw

226:デフォルトの名無しさん
19/08/21 13:07:38.33 23vMmTO3.net
逆でもあるだろうに。それで問題ないなら問題ないだろに
てか、>>217って言ってるのをを未だに理解できないの?理解したくないの?

227:デフォルトの名無しさん
19/08/21 13:09:19.14 ttxmDenw.net
結果的にbash依存になっているが当人はそんな事を意識していない、って感じ

228:デフォルトの名無しさん
19/08/21 13:09:33.13 tOxptV2F.net
>>223
君が質問に答えないからだよ
質問
> 思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?
結論
特になにかの機能が使いたいわけではないが、動いてしまったからbash依存になっただけ

229:デフォルトの名無しさん
19/08/21 13:11:10.44 23vMmTO3.net
そう>>217が言っているんだがな。なにか文を変えたいだけか?それもいやらしく
いつのもやつか、やっぱり

230:デフォルトの名無しさん
19/08/21 13:11:19.76 tOxptV2F.net
>>224
そうそう。そういう感じの答えが欲しかった。
(便利だから)特定の○○の機能が使いたい
or 理由はない
そういう答えを期待していた。

231:デフォルトの名無しさん
19/08/21 13:12:38.86 tOxptV2F.net
bashの機能のうち、これは絶対欲しいっていう機能は
あまりないってことなのかな?

232:デフォルトの名無しさん
19/08/21 13:18:24.42 8muhIeVb.net
最初から「bashの便利な機能」を聞いてるのに、
思いつかないなら無いって言わないから話がこじれるんだろう。

233:デフォルトの名無しさん
19/08/21 13:26:22.43 23vMmTO3.net
bashの便利な機能ってのが何を聞いてるのか曖昧だからな
kash,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんななの曖昧
シェルスクリプトに限らずスクリプトに限らずマルチプラットフォームを意識するかどうかの話にならざるを得ないだろう

234:デフォルトの名無しさん
19/08/21 13:28:58.51 rB/3mk9e.net
という話をして欲しいんじゃなくて
(あんたが思う)bashの便利な機能を聞いてるんだよ

235:デフォルトの名無しさん
19/08/21 13:30:51.65 KOXkIKEx.net
思いつかないなら、無いって素直に言えばいいじゃん。言い訳ばっかり

236:デフォルトの名無しさん
19/08/21 13:30:58.28 23vMmTO3.net
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんなのか曖昧
bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう。もちろんそんなに便利でもないのもあるだろうけど

237:デフォルトの名無しさん
19/08/21 13:31:56.80 23vMmTO3.net
>>231,232
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なの?

238:デフォルトの名無しさん
19/08/21 13:32:58.59 oH2mxJhX.net
>>233
POSIXにはなくて、bashにしかない機能。
kshやzshの話は聞いてないので無視して良い
これで質問に答えられるよね?

239:デフォルトの名無しさん
19/08/21 13:35:01.88 23vMmTO3.net
配列w
readのオプション
他にもあるけど、すぐに思いつかない、便利と意識して使ってるわけではないからな。空気と同じだよ

240:デフォルトの名無しさん
19/08/21 13:35:54.29 ttxmDenw.net
あまり便利だとは思わないけどよく使ってるのは "&>" と連想配列(declare -A)

241:デフォルトの名無しさん
19/08/21 13:39:22.38 dVKYqL0H.net
ほんと質問に答えさせるのに何レス消費させるのかw
配列、連想配列、readのオプション、"&>"
これぐらいか?

242:デフォルトの名無しさん
19/08/21 13:40:56.88 ttxmDenw.net
自称「神様」のきまぐれなお遊びに付き合ってやってるんだ
ありがたく思いやがって下さい

243:デフォルトの名無しさん
19/08/21 13:41:29.73 dVKYqL0H.net
あぁ昨日のsortが安定の神様かw

244:デフォルトの名無しさん
19/08/21 13:41:30.49 23vMmTO3.net
>>235といい質問に「答えさせる」といい、なんか見えすぎなんだけどな
どしたの?
あんたの意図がわからんからだよ。何をしたいの?いつもの負けん気だけか?
bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう
って言ってるんだけど。だから空気と同じと言っているんだがなあ

245:デフォルトの名無しさん
19/08/21 13:44:31.57 dVKYqL0H.net
という話をなんでするんだろう?w

246:デフォルトの名無しさん
19/08/21 13:44:58.76 dVKYqL0H.net
ほんと、質問の関係ない言い訳ばかりするよなw

247:デフォルトの名無しさん
19/08/21 13:45:07.40 23vMmTO3.net
>>240
俺のことなら違う。俺は>>204だったりするんだがなw

248:デフォルトの名無しさん
19/08/21 13:46:22.58 dVKYqL0H.net
>>244
やっぱりsortのおじちゃんじゃんw
安定の意味わかったの?
どうして行番号順にsortしてるのに、
並び順が変わると思ったの?
まだその答え聞いてないよ

249:デフォルトの名無しさん
19/08/21 13:46:59.44 23vMmTO3.net
>244
おお...違う違うwなんて間違いを
俺は>>209だったりするね
>>242
あんたの意図がわからんからだよw

250:デフォルトの名無しさん
19/08/21 13:47:41.90 cs49NQcU.net
意図がわからないなら、意図がわからないから教えてといえば良い

251:デフォルトの名無しさん
19/08/21 13:47:49.79 23vMmTO3.net
>>245
ノリでそのレスしたのか、嬉々としてそのレ�


252:Xしたのか、嬉々としてならすまんかったw



253:デフォルトの名無しさん
19/08/21 13:48:55.17 l+gTzvUp.net
んでsortの話はどうなったの?
安定がどうとか

254:デフォルトの名無しさん
19/08/21 13:50:29.02 23vMmTO3.net
>>247
そこに噛み付いている意味がわからない
会話として楽しんでいるんだからいいんじゃないの?みなさん(?)は
とか言ってみるw

255:デフォルトの名無しさん
19/08/21 13:55:16.57 +thc3RuF.net
bashのプロセス置換は便利だなー(棒

256:デフォルトの名無しさん
19/08/21 13:55:38.38 Z+yguh+d.net
働けよクソニート

257:デフォルトの名無しさん
19/08/21 14:00:20.39 +thc3RuF.net
ブレース展開も便利だなー

258:デフォルトの名無しさん
19/08/21 14:21:13.28 +thc3RuF.net
可搬性を求めるならPOSIXで書く。
テキストこねくり回す程度のものなら書ける。
可搬性要らないor自分の環境で動けば良いなら好きに書けば良い。
bash,zsh依存でOK。ちゃんとシバン書いてな

259:デフォルトの名無しさん
19/08/21 15:27:51.40 zqKd/4GT.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね。

260:デフォルトの名無しさん
19/08/21 16:35:44.19 MMv7CGOe.net
初めて触れたRH8も、Cygwinもbashだったから、
今でもふつうにbash使ってるな。
それにしても、bashはなんでこんなに嫌われてるんだ?w

261:デフォルトの名無しさん
19/08/21 16:44:32.20 MKRUgKM/.net
ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな

262:デフォルトの名無しさん
19/08/21 17:14:23.54 M+fZiddG.net
いつかカーソルキーのないキーボードを使うかも知れないから常にHJKL使えってvimスレの仙人が言ってた

263:デフォルトの名無しさん
19/08/21 17:36:09.70 +thc3RuF.net
>>258
Emacs使いはHJKL使わないってじっちゃんが言ってた

264:デフォルトの名無しさん
19/08/21 19:28:59.77 /hAWXHxO.net
>>257
Webサイト向けだが、UbuntuとDebianをあわせて59.7%がbash拡張の無いdashだからね
URLリンク(news.mynavi.jp)

265:デフォルトの名無しさん
19/08/21 19:32:04.69 CEaWdSia.net
>>256
bashがデファクトスタンダード的なもんだからな。採用の多さから
ksh,zshなどと置き換えても同じことだったりしてるからな、単なる象徴的な名称としてだけだろう
あとは/bin/shがbashな場合にイマイチな仕様だったりするとこか

266:デフォルトの名無しさん
19/08/21 19:33:05.60 /hAWXHxO.net
あとmacがbashをやめてzshになるらしいので、それなりどころか
過半数以上がbashを使わなくなりそう。
まあmac版のzshはbashと互換性があるように
デフォルトオプションを変更してそうな気がするけど
shwordsplitとか
>>258
bash以外を使うことがないって言いたいんだろうけど、その例えは的外れかな
現に多くの人がbash以外を使ってるわけだから

267:デフォルトの名無しさん
19/08/21 19:34:57.26 /hAWXHxO.net
あ、そういやWSLもUbuntuだっけか。他のディストリも使えるけど
そう考えるとdash使ってる人、かなりいるな。

268:デフォルトの名無しさん
19/08/21 19:35:53.33 CEaWdSia.net
>>261,256
訂正。bashを嫌ってる人はいるみたいだった。理解できんw

269:デフォルトの名無しさん
19/08/21 19:45:33.15 /hAWXHxO.net
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?
Ubuntu/Debianでdashが採用されたのは
パフォーマンスがいいかららしい。
URLリンク(wiki.archlinux.jp)
> 実行速度が速い。Bash などのシェルに比べて 4倍高速 に動作します。
その際にbash依存しているのに#!/bin/shを使われていたから
変更するのに手間がかかったって言われてるね。
あとセキュリティもbashよりもdashのほうが高そうだし。bashは今も機能加えてるから新たに脆弱性が生まれてくる可能性も高い。
URLリンク(ja.wikipedia.org)
> 2014年9月に公表されたBashについての一群の脆弱性(CVE-2014-6271 [1] 等)の発見は、
> 俗にシェルショック(Shellshock)、バッシュドア(bashdoor)と呼ばれている。
> 関連して6つの脆弱性が登録された。

270:デフォルトの名無しさん
19/08/21 19:51:13.28 CEaWdSia.net
なんかいきなりdash推ししているのがいるが>>257のいうデフォルトシェルがソレを指しているのって疑問
>>256なんぞからはデフォルトシェルはログインシェルのことを言っているのかと思ったけど
ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。引っかからなかったなにかがあるかもだが、引っかかったのがpasswd関連んとこだけというのもあり

271:デフォルトの名無しさん
19/08/21 19:53:39.23 /hAWXHxO.net
>>266
ログインシェルがbashでも
(UbuntuやDebianでは)#!/bin/shはdashだから

272:デフォルトの名無しさん
19/08/21 19:55:50.58 CEaWdSia.net
話が通じてないなw

273:デフォルトの名無しさん
19/08/21 20:02:35.45 MMv7CGOe.net
>>263
Ubuntu on WSL だと、デフォルトシェルはbashになる。
chshしない限り、WSLではbashのままの人が多いだろうな。

274:デフォルトの名無しさん
19/08/21 20:02:40.75 /hAWXHxO.net
>>268
ここでデフォルトシェルの定義がどうこう言っても無意味だっていう話
URLリンク(wiki.ubuntu.com)
> Why was this change made?
> The major reason to switch the default shell was efficiency.
デフォルトシステムシェルのことを
デフォルトシェルと呼んでる例なんていくらでもあるんだから

275:デフォルトの名無しさん
19/08/21 20:04:25.00 /hAWXHxO.net
>>269
> Ubuntu on WSL だと、デフォルトシェルはbashになる。
話通じてないなw
その人が書くシェルスクリプトの一行目には、どうせ #!/bin/sh って書くでしょ?
デフォルトログインシェルがなんであろうが、
デフォルトシステムシェルは dash になるんだよ。

276:デフォルトの名無しさん
19/08/21 20:08:56.78 MMv7CGOe.net
>>271
ああ、そいういうことね。
$ ll /bin/sh
lrwxrwxrwx 1 root root 4 7月 26 2018 /bin/sh -> dash*

277:デフォルトの名無しさん
19/08/21 20:09:40.60 CEaWdSia.net
誰かがデフォルトシェルと言えばそのデフォルトシステムシェルのことだと言っていたからなあ
流れ的に同じこと言っているなと。そんな話はしてないんじゃねえのってとことだな

278:デフォルトの名無しさん
19/08/21 20:12:54.47 /hAWXHxO.net
>>266
> ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。
POSIXが/bin/shについて語ることはあっても、
/bin/bashについて語ることはないと思う
POSIXの世界のシェルには/bin/shしかないのでは?

279:デフォルトの名無しさん
19/08/21 20:17:07.13 CEaWdSia.net
"default shell" というのはあるんだよ。そしてそれを指しているのはログインシェルっていう
なにか問題でも?ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもないってことだな、POSIXでの文章でそうなんだから
そして、ログインシェルの話をしていたって>>269で明らかになりましたってとこで俺は満足してますがw

280:デフォルトの名無しさん
19/08/21 20:19:20.00 MMv7CGOe.net
>>274
> POSIXの世界のシェルには/bin/shしかないのでは?
そうなの?
20年くらい前のbashの解説書 "bash Manual & Reference" には、
Bourn Shell(sh/bsh)をPOSIXに準拠させるために書き直したのが
Bourn Again Shell(bash)というふうに書かれていて、
そういうもんだと思ってたわ。

281:デフォルトの名無しさん
19/08/21 20:20:46.30 /hAWXHxO.net
>>275
うん、だからそこでデフォルトログインシェルの話をしたって意味がないでしょう?と言ってるわけ。
重要なのは /bin/sh の話だよ。
#!/bin/bash と書いてbashスクリプトを書くのはいいけど
#!/bin/shと書いていながらbashスクリプトになってるから嫌われているわけで

282:デフォルトの名無しさん
19/08/21 20:25:13.92 CEaWdSia.net
ふーん
食いつき&その後レスからそうとは思えないけど、まあそういうことでいいよw

283:デフォルトの名無しさん
19/08/21 20:26:05.08 /hAWXHxO.net
>>276
POSIXの世界にbashが出てくることはない。の反証として
bashの世界にPOSIXが登場したと言っても、それは反証になってないよw

284:デフォルトの名無しさん
19/08/21 20:28:27.61 LqLocPLj.net
bash bash bash
fish and bash

285:デフォルトの名無しさん
19/08/21 20:29:21.72 /hAWXHxO.net
>>278
なんでそう、本当は納得してないけど
納得してあげました風の言い方をするかな?w

最初から書いてるんだけど↓
265 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/21(水) 19:45:33.15 ID:/hAWXHxO [4/10]
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?

286:デフォルトの名無しさん
19/08/21 20:33:57.11 CEaWdSia.net
>>281
ああ、いつものだなってとこだなw
ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもない
というのがわかった|わかっているようなので、まあいいよってとこだよ
まさしく、その最初からも読み違いとしか思えないけど、まあそれもw

287:デフォルトの名無しさん
19/08/21 20:35:07.03 /hAWXHxO.net
>>282
ふーん、まあそういうことでいいよw





↑このレスにムカついた?
それがあんたがやってることだよ。

288:デフォルトの名無しさん
19/08/21 20:36:27.37 CEaWdSia.net
ムカついたのね。まあムカつくように書いたんだけどwなぜかはひみつww

289:デフォルトの名無しさん
19/08/21 20:40:12.26 /hAWXHxO.net
あーあ、とうとう反論はできないから、
ムカつかせるためだけにレスをしたって認めちゃったw
そういうとこやで

290:デフォルトの名無しさん
19/08/21 20:42:42.39 CEaWdSia.net
なんの反論????いきなりすぎて意味わかりません、なんの反論すればいいの?????
ちなみに、>>276は「そういうもんだと思ってた」と言っているように反証でもなんでもなく、困惑しているんじゃないかなあと思ってみたり

291:デフォルトの名無しさん
19/08/21 20:43:23.13 /hAWXHxO.net
>>286
ふーん、まあそういうことでいいよw

292:デフォルトの名無しさん
19/08/21 20:43:52.96 CEaWdSia.net
それなら、よしっww
終わって何よりw

293:デフォルトの名無しさん
19/08/21 20:44:38.88 /hAWXHxO.net
だからそういうことでいいってw

294:デフォルトの名無しさん
19/08/21 20:45:06.34 /hAWXHxO.net
bashコードなのに#!/bin/shを名乗るなってことでしょ?
ということが最後の話となった

295:デフォルトの名無しさん
19/08/21 20:45:11.83 CEaWdSia.net
だからそれでよかったねえw

296:デフォルトの名無しさん
19/08/21 20:45:37.37 ttxmDenw.net
         ,. '"´ ̄ ̄ ̄ ̄``ヽ、
        /::::::::::::::::::::::::::::::::::::::::::::::\
    /::::::::::::;.: --─---─-、:::::::::::::ヽ
    ./::::::::::::/ィC¨ヽ      \:::::::::::l
   /:::::::::/  └¬'´,   ィC¨ヽ';:::::::::!
  ./::::::::イ        / ,.  ヽ `¬┘';:::::::!
  l::::::::::::l       /ハ ハ }     ヾ::::j
  {::::{⌒l:!      / `   ' ヽ   V}
.  ';:::l ゝリ     l ,/ ̄¨ヽ  ',    }l
  ヾヽ__j     { {,. --‐‐ヘ    {,l
    ヾ::::|   i  ヽ ヽェェェェェノ     {
    }:::l   ヽ    ` ̄¨´   ノ   }
     ヾ;k    \_  __  ,/   }
     "|       ̄ ̄ ̄    ノ
  _,. -‐"\              フー-、_
'"´      `ヽ、          /                  ┼ヽ  -|r‐、. レ |  
                                         d⌒) ./| _ノ  __ノ  
                                        ---------------  
                                        制作・著作 NHK

297:デフォルトの名無しさん
19/08/21 20:46:44.09 /hAWXHxO.net
>>291
あぁ、反論っていうのは、これに対する反論だよ。

298:デフォルトの名無しさん
19/08/21 20:47:09.06 /hAWXHxO.net
これって言うのは、これね
> bashコードなのに#!/bin/shを名乗るなってことでしょ?

299:デフォルトの名無しさん
19/08/21 20:49:21.93 /hAWXHxO.net
>>257
> ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな
bashがデフォルトシェルじゃないOSってなに?
流石にWindowsのことではないと思うけどw

300:デフォルトの名無しさん
19/08/21 20:50:16.25 /hAWXHxO.net
いや、OSもそれなりにあるもんなっていうから
そのOSはそれなりに使われてるんだろうなと思ってね。

301:デフォルトの名無しさん
19/08/21 20:51:38.32 CEaWdSia.net
誰もそんな話はしてないと思うし、俺は最初ので触れているんだけどな
誰かみたいに「名乗るな」とか言わなけどw
てか、続けんのかよw自分の言ったことを忘れすぎだろう
あら、あら、まあ。いつものだな。終わりますww

302:デフォルトの名無しさん
19/08/21 20:52:22.52 /hAWXHxO.net
あぁ、デフォルトシェルっていうのは、
デフォルトシステムシェルってことか
URLリンク(wiki.ubuntu.com)
> Why was this change made?
> The major reason to switch the default shell was efficiency.
↑この文脈の「the default shell」
それならたしかにたくさんあるわ

303:デフォルトの名無しさん
19/08/21 20:53:10.58 /hAWXHxO.net
>>297
ふーん、まあそういうことでいいよw

304:デフォルトの名無しさん
19/08/21 20:54:13.14 /hAWXHxO.net
デフォルトシステムシェルっていうか
システムが使うデフォルトのシェルっていうべきかな?

305:デフォルトの名無しさん
19/08/21 21:33:16.44 WsJBrYLB.net
macOS10.15でzshに変更になるって話、/bin/sh は結局何になるんだろう?
zshかな?って思ってたけど、dashの可能性もあるのかな?
ここ読んで知ったけど
URLリンク(scriptingosx.com)
ログインシェルに /bin/dash を選べるようになってるらしい。
URLリンク(support.apple.com)
(homebrewの話ではないよ)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch