過去UNIXで使われていた ksh というシェルについて
https://github.com/att/ast
ksh 2020 リリース
↓
クソやろこれ
↓
ksh 93 にバック・トゥ・ザ・フューチャー
↓
今に至る kshがデフォルトのOSってなんだっけ?
Solaris?まあもう死んでるが。 Solaris11のデフォルトシェルはbashやで… それはユーザーのシェルやろ?
https://docs.oracle.com/cd/E26924_01/html/E25934/userenv-1.html
シェルの変更 - デフォルトのシェル /bin/sh が ksh93 にリンクされるようになりました。デフォルトのユーザーシェルは Bourne-Again (bash) シェルです。 HP-UXにデフォルトで入ってた記憶はあるけどOSのデフォルトだったかどうか覚えてないな 家でSPARC Solaris動かしてたけど、ユーザーシェルはzsh使ってたな kshのバグ修正してる人すごいな
大部分は他の修正のバックポートなんだろうけど
それでも大変すぎる作業だ 2000-2010年にksh使ってる層は大体ドザーだろ
MS提供のwindowsコマンド集に含まれてた
ksh寄りのbashが流行ったのもwinでksh使ってた層に受け入れられたからだろうと思ってる
少なくとも俺はそうだったな >>11
適当なこと言って恥ずかしくないの?
WindowsというかSFUに付属していたのはMKS Korn Shellで
kshとは互換性がない別物だしSFUなんて殆ど使われてない
kshを使ってたのはkshがデフォルトシェルのSolarisユーザーだろ
そもそもUnix系で使われたのがkshだし Solaris も SunOS もログインシェルは Bourne シェルだし
システムシェルが ksh に変わったのは Oracle Solaris 11 で
それまでは Bourne シェル >>13
そんなに違うのか
bashには違和感なく移行できたが そもそも2002年リリースの3.0からは MKS Korn Shell ではないし WindowsのSFUって、Service For Unixの略だったっけ?
と思ってぐぐったら、元は有償だったんか >>14
Bourne シェルはbashよりも前に存在していたシェルで
bashやkshがもってるPOSIX標準機能をサポートしてない
かなり違うよ >>18
> kshがデフォルトシェルのSolaris それにしてもものすごい修正の量だな
93u+m 1.0.0のリリース楽しみ >>22
修正している内容を見ると、ほんとこれでよく動いていたと思うわ
コアの重要な部分のまれにおこるかもしれないようなバグ修正がたくさん
絶妙なバランスで動いていたんだなーと思う
ksh2020が互換性がなくなってしまったのも仕方ないと思うな 英語のWikipedia にあった、これの事か。
That initial release (although fixing several prior stability issues) introduced some minor breakage and compatibility issues. In March 2020, AT&T decided to roll back the community changes, stash them in a branch, and restart from ksh93u+, as the changes were too broad and too ksh-focused for the company to absorb into a project in maintenance mode. Debian で ksh と set -o vi で使ってたけど、bash の方が素直な動きな気がせんでもない mkshはシェアじわじわ伸ばしてるだろ、対話的に人気かはさておき
androidにコンソール機能だけの薄っぺらいアプリ入れるとmksh触ることになる
権限厳しくてデバイスファイルもまともにアクセスできんが
使いづらいスマホで疑似環境/ゲスト環境まで入れて弄る奇特な人間はそこにbashとか入れるだろうが >>27
mkshはkshじゃなくてpdkshベース
貧弱すぎてkshの足元にも及ばない >>26
対話bashスクリプティングdashでやってるけどksh系のprintが羨ましいってのはある
rsとかcolumn(linux版の高機能なやつ)を併用すれば良いんだけど、毎回色々忘れてマニュアル眺める
bash頒布物にビルトイン用print.cのスタブが放棄されてるので、メンテナもそう考えてるんだろうな
zshはなんかもう違う気がする 思い付いた勢いでmkshとやら入れてmksh -c print mkshprint "$@"するだけのラッパ書いてみた、まあ変数アサインとかビルトイン特権な機能は諦めるとして
なかなか使い心地よさそうな感じ ksh も bash も文法の大半は同じで、OS の差違、シェルの差異、バージョンの差異、どれが原因で動きが違うのかわからんのよね。
30−31 の人、凄そう。
そのシステムで利用されているシェルから、欲しいとこだけパクるしかしてないので、違いがよくわからない。 >>32
買いかぶってもらって悪いけど、普通に間違ってんだわ
mksh -c 'print "$@"' mkshprint "$@"
mkshに2つ目の@をバラして位置パラメータをセット、1つめの@はmksh自身にもう一度単語分割してもらう
--helpを受け付けずすぐに使い方忘れそうなんで、--helpの時はman mkshからsedで切り出して表示するようにした というか俺の思ってたフォーマット系最強コマンドとしてのprintはほぼzshの拡張機能だったらしい、zshも入れてみるか…
mkshのはフォーマット機能弱いけど、ヒストリやコプロセスに出力送れたりビルトインとして使えれば非常に強力なもの
bashの配列変数に入ったfdでやり取りする方式のcoprocより使いやすいかもしれん、コプロセスを非常に繁用するので、もしかしたら対話シェルにbashから乗り換える事になるかも
しかし何分ネット情報が少ない… 普及してるbashでもcoprocのような高度な機能使ってる奴そんなおらんぞ 色んなシェル触るのは大事だと思う、例えゴミクズだろうと名が通ってるものならば
例えば酔狂で一日(t)csh縛り経験するだけでも古文書の理解度が全然変わってくる >>33
何したいのか知らんが
alias print="mksh -c 'print \"\$@\"' --"
でいいんだろ?
もしくはシェルスクリプトに書けばいいだけ
#!/usr/bin/env mksh
print "$@" >>40
自宅にパソコンないんか?
すまんかったw
ひどいことを聞いてしまったwww