シェルスクリプト総合 その29

■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
2019/06/25(火) 20:24:51.66ID:cs2C/fkq
>>753
それの遅い原因はわかっていて、ループの中でコマンドを呼び出しているから
yashは浮動小数点数が使えるから、簡単にコマンド呼び出しをなくせるし
シェルスクリプト用の浮動小数点数ライブラリがあればもっと高速化できる

もちろん他の言語よりかは遅くなるが、逆に言えば少数を使わない処理は
シェルスクリプトでも十分速い
2019/06/25(火) 21:43:54.45ID:NEREV216
そこまでシェルスクリプトに拘るのはなんでだろ。まあスレ的にはいいけど
2019/06/25(火) 21:57:45.49ID:DXMPLOPq
別に拘ってないよ。
前にも言ったけど、寧ろシェルスクリプトを「使わない」ことに必死な人物の方が多く見受けられる

そういう人々はPythonやRubyやらは便利で何でもできると思ってるようだが 実のところその殆どの機能はシェルスクリプトで十分まかなえる
しかもUnix系OS(これは世界で最も広く使われているOSの一つ)には既定でPythonやRubyはないがPOSIX環境ならある、というようなものもかなりある。
2019/06/25(火) 22:12:19.75ID:NEREV216
それが拘っているというのだよ、別にいいじゃん他人の好き好みなら
たんなるグルー言語としてしか使わないのがいても当たり前、グルー言語の発祥元がシェル=シェルスクリプトなんだし
無理して、技巧的にならざるを得ないシェルスクリプトでやりたくないと思うのがいても普通だろうと思うけど

その最後のもそんな窮屈な環境を持ち出さなければ、持論が弱いもしくはやはりこだわりたいだけだなと思うだけだな。世間一般的にそんな環境ってどれだけあるんだか
2019/06/25(火) 22:14:13.67ID:cs2C/fkq
こだわるってのはシェルスクリプトでやるのが難しいのをシェルスクリプトでやることであって
シェルスクリプトでやるのが簡単なことを、わざわざ他の言語で長いコード書いてやるのは
単にシェルスクリプトが使えないだけ
2019/06/25(火) 22:18:25.41ID:NEREV216
それで?誰のこと言っているの?スレにではないどこぞのブログとかの?
そんなことことで言って、なんなの?まさか、シェルスクリプト使える俺ってわけじゃないんでしょ?
2019/06/25(火) 22:35:37.53ID:T59Fmr+u
>>758
使うとか使わないとか、どちらかに「必死」とか考えちゃうほうがおかしくないか?
本人が使いやすいと思う使い方を、とやかくいうことでもないでしょ。

Windowsで普段PythonやRubyを使ってる人(それなりの利用者がいる)が、
たまたま別の*nixの環境を使うことになった場合、
慣れないシェルスクリプトを使うことより使い慣れた各種言語を使うことだって選択肢としてあり得る。
たとえ、自己満足でそれを選択したとしても、それはそれで否定されるようなことじゃないよね。
2019/06/25(火) 22:37:43.25ID:cs2C/fkq
× 自己満足でそれを選択したとしても、
○ シェルスクリプトが使えない能力不足で選択しても

だろ?
2019/06/25(火) 22:49:52.60ID:T59Fmr+u
だから、どちらでもいいと言ってるんだけど、わからんかなぁ。
2019/06/25(火) 23:09:53.71ID:NEREV216
わざわざそんな変な訂正するくらいシェルスクリプトを使えるのがよほど自慢らしい
話にはならないな、このスレ見てるのはシェルスクリプトが使える人だろうというのに
2019/06/25(火) 23:40:27.61ID:DXMPLOPq
>>762
もちろんそう。
でもシェルスクリプトを使うのに「拘る」
という言い方がちょっと気になってね。
2019/06/26(水) 02:56:40.90ID:bFZBAYMT
JCL書けてもCOBOL書けなきゃ所詮使えない奴
2019/06/26(水) 04:39:11.67ID:A3AE1MVC
JCLとかCOBOLってPCで使えるんだっけ?
2019/06/26(水) 05:53:32.15ID:5bijRuYR
COBOLは使える
JCLは意味による
2019/06/26(水) 06:15:49.88ID:278w9ub/
シェルスクリプト書けてもC書けなきゃ所詮使えない奴
771デフォルトの名無しさん
垢版 |
2019/06/26(水) 08:58:30.18ID:qk5ECIA8
女子中学生Love
2019/06/26(水) 11:09:09.74ID:+23jdxl3
例えば、環境変数PATH を、パス区切り文字で区切って、1行ずつ表示したい

PowerShell なら、
$env:Path.split( ";" )

Ruby なら、
echo $PATH | ruby -ne 'puts $_.split( ":" )'

シェルスクリプトなら、
echo $PATH | tr : "\n"

tr で変換するのが、しっくりこない!
ただ、区切り文字で区切って、1行ずつ表示したいだけ!

シェルスクリプトで、簡単・可読性が高い、書き方があるかね?
2019/06/26(水) 11:39:42.18ID:278w9ub/
bashなら echo -e ${PATH//:/\\n}
これなら tr のほうが可読性いいよな
2019/06/26(水) 12:27:41.49ID:A3AE1MVC
IFS=:
for p in $PATH; do
 echo "$p"
done
2019/06/26(水) 12:29:22.59ID:A3AE1MVC
trは遅い。 ${PATH//:/\\n} は bash依存
2019/06/26(水) 12:32:02.93ID:A3AE1MVC
パスを一つ一つ処理するなら>>774
本当に表示するだけでいいなら

IFS=:
printf '%s\n' $PATH
2019/06/26(水) 14:20:31.53ID:MBtdxCbX
また出たよ否定からのヤツ
2019/06/26(水) 15:17:24.20ID:4AX1EN8S
>>776
おお!すごい。
これはPOSIX準拠してるからどのOSでも(しかもPowerShellやRubyみたいな標準化されてない言語が入ってないUnix系OSですら)使える。
しかもIFSは「Internal Filed Separator」という意味で,それの値を変えるということは
「区切り文字を変える」ことを明示できる。
しかも余計な外部コマンドを使ってないから早い。
2019/06/26(水) 15:23:24.08ID:4AX1EN8S
もちろん時と場合によってPythonやC#を使ったりするけど,それでもシェルスクリプトを一番に考える理由って,規格と実装とが綺麗に分かれてることなんだよね。
PythonやC#にも一応規格というか標準はあるけど,その実装は公式のものとあと二つ三つくらいしかない。
シェルスクリプトにはPOSIX標準という「私は実装しません。この文書を読んで好きに実装して下さい」という素晴しい哲学の規格-実装の仕組みがある。
そのお陰で数十もの個々のPOSIXシェル実装があるから,様々な機械で動かせる。PDP-11用のC#コンパイラなんてないでしょ?
まあ複雑なこと(XMLパースとか排他処理とか)やろうとすると途端に面倒なことになるので,そういう時はPythonやC#に逃げるけどw
2019/06/26(水) 15:23:55.57ID:4AX1EN8S
あ,「今時PDP-11なんて使わねーよ」なんていう例えという概念が分かっていないツッコミはなしで。
2019/06/26(水) 15:38:30.86ID:A3AE1MVC
>>778
> しかも余計な外部コマンドを使ってないから早い。

正確に言えば、mkshとposhではprintfは外部コマンド
それを避けたい場合は>>774になるだろうね
2019/06/26(水) 16:49:32.75ID:4AX1EN8S
>>781
printfが外部コマンドのシェルがあるとは知らなんだ。
たしかに特殊組込コマンド(必ずシェルに組み込まなくてはいけないコマンド)一覧
http://pubs.opengroup.org/onlinepubs/9699919799/idx/sbi.html
にはprintfはないな。
2019/06/26(水) 17:23:49.84ID:A3AE1MVC
>>782
それらはシェルに組み込まないと実現不可能なものだからね
カレントシェルの状態を変更・取得するものだから外部プロセスではできない。

それ以外は外部コマンドでいいわけだよ。
古いzshもprintfはビルトインではない
2019/06/26(水) 19:36:40.66ID:Y3pTO8/n
速度問題にするならプロファイラ欲しいよね
ボトルネック探すために

どんなツールを使っている?
2019/06/26(水) 19:56:32.05ID:A3AE1MVC
基本はtimeだな。あとはstrace使ってfork数の確認とか
シェルスクリプトが遅くなる原因はforkが大半なので
これを抑えるようにすると速くなる。
あとzshだとzprofというのが使える
2019/06/26(水) 20:56:42.18ID:4AX1EN8S
ていうかシェルスクリプトで速度を気にするのが間違いでは?w
早い処理速度を求めるんであればCで書けばいい。
2019/06/26(水) 21:01:41.99ID:A3AE1MVC
別に間違いではないよ。
シェルスクリプトで実装るのが適切な問題を
遅いからという理由だけで、他の言語を使わなくて良くなる。

クソコード書いておいて、シェルスクリプトは遅い。
だからCで書くとか言われたらバカみたいって思うでしょ
2019/06/26(水) 21:24:26.72ID:4AX1EN8S
>>787
> クソコード書いておいて、シェルスクリプトは遅い。
> だからCで書くとか言われたら
いや,それは単純にそんなコードを書くバカの問題であって,
プロファイラが必要になるくらい速度に厳しいプログラムを
シェルスクリプトで書いてしまえば,恐らく誰であろうとCより遅くなる。

だから「シェルスクリプトは遅い」というのは
「本質的に遅く,Cで書かないと速くならないプログラムを無理矢理シェルスクリプトで実装してる」
or
「シェルスクリプトの書き方を知らないがネット記事のコピペを切り貼りして作った凡コード」
の二通りに分かれる。
結局「バカでない人間がシェルスクリプトの速度をプロファイラを使ってまで気にする」という事態は発生しえない。
2019/06/27(木) 04:28:29.87ID:SGv/MKem
プロファイラが必要になったからって、速度に厳しいわけじゃないぞ。
プロファイラってのは速度を追求するものではなく、ボトルネックを探すものだ。

シェルスクリプトでもちゃんと使っていれば、実用に耐えられないほど
遅くなるなんてことはないんだが
よくわかってないやつが使うと遅くなる。

大抵はループの中で大量のコマンド呼び出しをしてるからなんだけどな。
2019/06/27(木) 17:54:22.07ID:vYBmK8+j
perlのない環境で、grepやsed使って、
ついつい\d、\wとかを使って、困惑することしばし…
わかっちゃいるんだけど、よく忘れる orz

grep(-P)のように、sedも対応してくれんかのぉ
まぁ、気づかなきゃ同じことだけどw
2019/06/27(木) 18:09:55.21ID:Sx1H26YL
シェルスクリプトと関係ないな。
コマンドの問題だし。
2019/06/27(木) 18:25:20.18ID:HOV3qatT
だったらこのスレいらないな
2019/06/27(木) 18:58:25.19ID:YlgL60Eu
いまだに¥を平気で書いているのにとも
\使える書けるんだから\にしろ、そこからだw
って、(一部)Linuxで採用しているTakaoフォントのグリフが円記号なんだよな。元々の(古い)IPAがだが
794デフォルトの名無しさん
垢版 |
2019/06/27(木) 19:11:05.80ID:pgi+u0Sx
どんな環境でも動くシェルスクリプトって都市伝説だよね?
POSIX準拠にこだわったりってムダなことだったんだな。
どうせ可搬性が幻なら、あるがままを受け入れよう。
2019/06/27(木) 19:40:57.78ID:Sx1H26YL
俺が作ったのはどの環境でも動いてるけど?
2019/06/27(木) 20:22:07.56ID:gzj/T4br
僕が作ったシェルスクリプトも どの環境でも動いてくれています(KONAMI)
2019/06/28(金) 13:06:45.81ID:hRIfy8PX
>>792
この返しをする奴の頭の構造が理解できん
コマンドの話なのにシェルスクリプトスレが要らないってどういうこと?
2019/06/28(金) 13:27:15.18ID:LKtIca5E
>>739 のリンク先にあるPOSIXで必須とされるコマンド(grepやsedもこれに含まれる)の問題が、
シェルスクリプトと関係ないということでスレチというのなら、
このスレの存在意義が相当薄れることは確か。
2019/06/28(金) 15:20:25.88ID:p9xekXNc
>>797
じゃあお前は外部コマンド使用禁止な
2019/06/28(金) 15:23:54.26ID:p9xekXNc
外部コマンド総合スレでも立てるか
でシェルスクリプトはスレチなw
2019/06/28(金) 15:37:17.44ID:hRIfy8PX
なるほど。こういう人のことをアスペと呼ぶんだ。

>>798
でもここPOSIXスレじゃないよ?
2019/06/28(金) 15:40:05.21ID:p9xekXNc
反論できなくなるとアスペ認定か
どっちがアスペだよ
2019/06/28(金) 16:03:38.70ID:zQSIyUJ5
お前のログインシェルをfishにしてやろうか
2019/06/28(金) 16:07:31.10ID:xFtlJ1q/
ww
805デフォルトの名無しさん
垢版 |
2019/06/28(金) 16:33:23.58ID:4HrFS9y+
いいやんfish
何で笑い物になってんの??
2019/06/28(金) 16:45:37.81ID:hRIfy8PX
>>802
アスペって文字見ただけで頭に血が上っちゃった?
次の行も見てよお願い
2019/06/28(金) 17:01:53.99ID:p9xekXNc
>>806
総合って言葉の意味分かる?
マジで頭悪そうだな
2019/06/28(金) 17:43:39.21ID:iEcNYkGc
かなり馬鹿そうだな
2019/06/28(金) 18:11:19.47ID:T2T4CcZF
fishってw
810デフォルトの名無しさん
垢版 |
2019/06/28(金) 18:56:40.55ID:4HrFS9y+
シェルスクリプトが本当にイケてたらfishスクリプトだのVスクリプトだの出てこない。
2019/06/28(金) 19:09:05.16ID:Ul5nd1dv
C言語が本当にイケてたらPerlなんて出てこない

↑好きな言語に変更してください
2019/06/28(金) 19:11:15.58ID:Ul5nd1dv
fishはシェルとして使うのは良いけど、
/bin/shでも/bin/bashでも動かないから
スクリプトとしては使えないんだよな
2019/06/28(金) 19:12:15.60ID:Ul5nd1dv
良い言語が必ずしも普及するわけじゃなくて
結局は互換性、標準準拠のものが最後には残るんだよね。
JavaScriptとaltJSの関係でもよくわかった
814デフォルトの名無しさん
垢版 |
2019/06/28(金) 19:54:48.75ID:5SvDrToF
つまりTypeScriptもいずれ滅びると。
2019/06/28(金) 20:01:22.66ID:Ul5nd1dv
>>814
その可能性はあるけど、他の互換性がない言語よりかはマシだろうね。
TypeScriptはJavaScript+αだから互換性がある。
2019/06/28(金) 20:48:45.94ID:T2T4CcZF
男はCでwebアセンブラ書け
2019/06/28(金) 21:33:38.23ID:T2T4CcZF
ていうかそんなに互換性やら保守性やら気にするんだったら黙ってPOSIXに準拠しとけよとは思うけどね。
2019/06/28(金) 21:40:41.84ID:fHg6yLGA
POSIXモードもしくはPOSIX準拠をうたっているのが本当か?というとこかな
なにか完璧POSIX準拠それ以上も以下もないってどれだ?dash?
あと、POSIX以前もしくは不備のとかちょっと前の話題でもあったねえ
2019/06/28(金) 23:19:35.88ID:2yxMx+rx
シェルスクリプトの言語仕様なんてたかが知れてるんだから
覚えられないはずがないんだが、それができないのは覚えられないんじゃなくて
シェルプログラミングのプログラミングスタイルを理解できてないってことなんじゃないかな
手続き型というより関数型に近いスタイルだからね

>>818
dash(ash)一択でしょ
debian/ubuntuのデフォルトシェルだし
その他のシェルはPOSIX準拠ではない配列が使えてしまう
820デフォルトの名無しさん
垢版 |
2019/06/28(金) 23:25:17.84ID:CM5w69Yd
なんでshじゃダメなの?いや煽りでなしに。
2019/06/28(金) 23:28:28.79ID:2yxMx+rx
>>820
shの実体は何?
822デフォルトの名無しさん
垢版 |
2019/06/28(金) 23:37:24.02ID:CM5w69Yd
知らんけどもともとは何だったの?
2019/06/28(金) 23:37:32.86ID:GaQSOKcq
>>819
dashがたぶん近いんだろうが、POSIX準拠それ以上も以下もないのか本当に?というとこかな
POSIX準拠それ以上も以下もないんだったら、dashで動けば終了、他で動かないのはPOSIX準拠してないからそいつが悪いで済むんだろうなw
2019/06/28(金) 23:42:51.93ID:GaQSOKcq
>>822
/bin/sh の実態がbashだったりkshだったりdashだったりというのが現在
元々のオリジナルのshはアレすぎて現存しないんじゃないかな

オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
という流れじゃなかったかなあ。/bin/sh なんて存在しない、現在
825デフォルトの名無しさん
垢版 |
2019/06/28(金) 23:51:49.75ID:CM5w69Yd
>>824
知らんけど聞く限り/bin/shの指し先が千差万別なのが諸悪の根元なんじゃないの?
どんなにショボくてもオリジナルのsh復興してそれ以外で書いちゃダメってことにすれば?
それで不便があったとしても、それが本来のshでしょ。
わがまま言っちゃいかん。
2019/06/28(金) 23:54:24.85ID:2yxMx+rx
オリジナルのsh = POSIX準拠ではない
改変版のsh = OSとそのバージョンの数だけ存在する(数十種類レベル)
2019/06/29(土) 00:00:54.47ID:4wm1mmLB
オリジナルのshのソースコード(C言語)
http://x68000.q-e-d.net/~68user/unix/pickup?sh


#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}


 IF input>0
 THEN Ldup(input,INIO);
  input=INIO;
 FI



(C言語)
828デフォルトの名無しさん
垢版 |
2019/06/29(土) 00:02:31.18ID:Jbfm6ENB
>>824 >>826
やっぱりどこでも動くシェルスクリプトなんて都市伝説だったんじゃん!
2019/06/29(土) 00:09:28.44ID:Mqz9B8yO
>>825
いやいや。POSIX規格の元がshではなくてkshということで、その時点でshは終わってる過去の遺物だろう
言うようなのは sh という別の規格があった方がいいと言っているようなもんだな。POSIXはなぜ作られたのかよーく考えよう

わがままwwてか「何も知らないくせにw」うるせーよっ
2019/06/29(土) 00:10:03.56ID:4wm1mmLB
>>828
オリジナルのshで作れば、動かないものになるから
オリジナルのshは消え去った。

POSIX準拠で作ればどこでも動くって話をしてるんだが?
2019/06/29(土) 00:15:00.86ID:Mqz9B8yO
>>827
Bourne さんは Algol68 プログラマであったそうで〜Bourne shell のソース自体も Algol68 風になっており
らしいからまあしょうがないんだろうと思うけど、defineの使い方の説明のサンプルでそういうのを見たことがあるが、まさか実際にというのは、それも有名どころがというはちょっと驚き
2019/06/29(土) 00:25:29.35ID:0fRKmc/o
POSIX準拠をうたうOSのデフォルトシェルはPOSIX準拠を保証する。
Linuxの場合は/bin/shがこれにあたる。
ディストリによって実体は bash,dashと様々だが、
自身がshの場合はPOSIX互換モードで動作するようになっている。
とはいえ重箱の隅をつつけば、実装が追い付いていない部分はあるがね。
2019/06/29(土) 00:28:01.49ID:XWmNXWFB
互換と準拠を取り違えてるのか
初期のUNIXだとglobが外部コマンドらしいな
なんで検索機能をこう呼ぶのかよく分かったわ
2019/06/29(土) 00:53:37.63ID:Mqz9B8yO
>>824
>オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る

オリジナルのshが機能不足だったり独特だったりで、(cshや)kshやbashやashやzshなどなどが出て乱立する
これはイカんということでPOSIXで規格をkshをベースに作る
ash(dash)は元々オリジナルshの(+ちょっとだけ機能追加した)再実装なので、それにPOSIX準拠という以外の余計なことは(ほとんどあまり)してない
ってとこかな
835デフォルトの名無しさん
垢版 |
2019/06/29(土) 02:07:31.33ID:rJpz/Ysh
煮え切らない言い方だな…
そんなことしてるから可搬性なくなるんだよ。
機能不足だろうが独特だろうがそれがsh。
一切追加するな!余計なことするな!
2019/06/29(土) 02:49:26.27ID:2GBw6kuy
ググってなりもってこいよ、文句言うくらいだったら
文句言う自分では探さないで奇抜な怒りwだけって奇特な人だな
奇抜=あれやこれややる人が多数、そういうのが好まれ使われてるんだから、それを頭から否定する
2019/06/29(土) 02:50:55.42ID:4wm1mmLB
だからオリジナルのshだと可搬性がないんだって
2019/06/29(土) 05:00:31.68ID:tuUcuaq1
「オリジナルのsh」とかいう自分用語で語るのやめてくれない?
2019/06/29(土) 05:36:56.40ID:4wm1mmLB
オリジナルのshという言い方が嫌なら、
最初に作られたshでもいいけど?
2019/06/29(土) 05:44:09.80ID:4wm1mmLB
bash, zsh, ksh, (d)ash, yash, poshのいずれでもないshは可搬性がない
2019/06/29(土) 06:13:45.36ID:khQF1iKv
文句言うだけが生きがいもしくは言わないと死んじゃうんだろうw
2019/06/29(土) 07:46:29.87ID:tuUcuaq1
Bourneって「ボーン」って読むの?
843デフォルトの名無しさん
垢版 |
2019/06/29(土) 09:05:01.55ID:e/5j8c1q
>>840
独自機能を使ったら可搬性がないのだからbash, zsh, ksh, (d)ash, yash, poshと別れてるのは百害あって一利なし。
bash, zsh, ksh, (d)ash, yash, poshのintersectionを取って新時代のshとし、他は滅ぶべし。
それ以外を使うものは地獄の業火で焼かれるべき。
2019/06/29(土) 09:06:26.66ID:YzN8MsSb
bash はどこにでもあるイメージ
2019/06/29(土) 11:12:01.76ID:XWmNXWFB
UNIXでBourne shell誕生
SVR4で軽量版bshのash誕生
Debianで改良版ashのdash誕生
BSDでcsh誕生
cshの便利機能(alias、ジョブ制御)をbashが吸収
改良版cshのtcsh誕生
bshとcshと合わせたksh(ksh88、ksh93)誕生
kshは商用なのでフリー版(pdksh、mksh)誕生
既存シェルをつまみ食いしたbash誕生
改良版bashのzsh誕生
独立系のfish誕生

適当にググったけど種類多くてワロタわ
わざわざashを作った理由やkshが分かれてる理由が分からんが
2019/06/29(土) 12:16:50.57ID:L6EEl7gg
可搬性ってそんなに重要か?
そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?
やりすぎると可搬性無くて死ぬだろうけど、各々の身辺環境は異なるのだから
各々が経験に応じて決めればよくね?
echo の引数で -n が使えるか使えないかなんて考えるのやめて10年以上経つわ。
2019/06/29(土) 14:11:03.73ID:L6EEl7gg
>>845
大昔はメモリが貴重だったからシェルのサイズは小さくしたかったんでしょう。
その先で vfork だの Copy On Write だのテクノロジが生まれたわけで。
2019/06/29(土) 14:37:45.71ID:m0/FgwM7
どんどん便利な機能が追加されて良いではないか、みんな好きなの選べば?という人種と
何も変えてはいかん、全てを標準に合わせろ!という人種
大抵の人はその中間なんだろうけど。

bash-5.0 で取り入れられた新機能、一応フォローしておくか (そしてすぐ忘れる) と思うけど
それ積極的に使っていこうぜとは思わないもの。
2019/06/29(土) 14:49:39.62ID:khQF1iKv
新機能のうちのいくつかもそのうち当たり前に使うようになってるでしょ。便利であれば
このスレでbash特有とかあるように
2019/06/29(土) 15:04:32.87ID:khQF1iKv
>>845
>bshとcshと合わせたksh(ksh88、ksh93)誕生
>kshは商用なのでフリー版(pdksh、mksh)誕生
>既存シェルをつまみ食いしたbash誕生
>改良版bashのzsh誕生
kshとcshを合わせたzshが誕生
じゃないかな。で、
bshにcshの便利なヒストリ(など)を取り込んだkshが誕生
ではないかな

時系列的には
https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2019/05/Evolution-of-Linux-Shells-Types-of-Shells-in-Linux-Edureka-528x280.png
らしい。zshはcshの派生になってるけど正しくはkshからも引くべきだろうね、開発時のメッセージでそう明言してる
2019/06/29(土) 16:07:00.45ID:khQF1iKv
ああ、cshではなくてtcshだった
This is a shar file containing zsh, a ksh/tcsh-like shell.
2019/06/29(土) 16:24:24.49ID:0fRKmc/o
>>846
可搬性は求めない。環境限定で動けば良い。運用寿命は数年もてばいい。
が要件ならば、拡張機能使っても問題ないだろうね。
2019/06/29(土) 16:43:46.48ID:tuUcuaq1
>>852
> 環境限定で動けば良い。運用寿命は数年もてばいい。
これを満足するのがPOSIX標準なんですよね。
2019/06/29(土) 16:53:39.78ID:0fRKmc/o
>>853
POSIXは可搬性を高めるための規格なので逆だと思います。
2019/06/29(土) 16:59:43.19ID:/BkVpaGH
>>843
> 独自機能を使ったら可搬性がないのだから

独自機能を使わなければ可搬性がある
という証言いただきました!
2019/06/29(土) 17:05:11.99ID:/BkVpaGH
>>846
> そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?

落ちないよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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