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

■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/

関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
2021/03/19(金) 04:05:22.98ID:RMQx/osX
catよりパロディのtacの方がオプションモリモリでcat以上に乱用されてるよな…
2021/03/19(金) 04:19:36.74ID:L0TmvpAG
>>74
catのプロセス分のリソースも無駄だが、
コンテキストスイッチが多発するのが良くない
2021/03/19(金) 12:05:21.82ID:8EGHMbin
$ cat << EOL > file1
> foo
> bar
> EOF

これでヒアドキュメントを使った複数行テキストの書き込みはできるんだけど、
cat を使わないようにするのって可能なのかな
2021/03/19(金) 12:06:22.99ID:8EGHMbin
>>96 s/EOF/EOL/
2021/03/19(金) 12:13:54.81ID:UA/QoJ1s
エンドオブライフ
2021/03/19(金) 13:27:42.94ID:8EGHMbin
tee を使えば行けることに気付いたけど、cat が減っても tee が出てきたら意味ないよね
そもそも数行程度で cat を無理に外す必要はないことに気付いた
忘れてくれ
2021/03/19(金) 15:51:37.59ID:R0IdNopV
echo ... >file
でええがな。w
シェルビルトインコマンドやし、ちょっと軽い。
2021/03/19(金) 16:55:09.45ID:MDPOlxpG
>>96
ちょっと上に出てきたshcatからわかるように
catはほぼ同等のものをシェルスクリプトで実装できる
(ファイルにNULL文字や不正な文字が入ってる場合に少し異なる)

ただし行数が多くなるとループ処理の回数も増えるので
遅いシェルスクリプトよりもcatの方が良い

ちなみにこんな感じね
while IFS= read -r line; do
 printf '%s\n' "$line" 
done << EOW > file1
foo
bar
EOW
2021/03/19(金) 16:56:26.33ID:DiNJqFEB
それでいいなら最初からそうしてるんじゃないか。知らんけど。
103102
垢版 |
2021/03/19(金) 16:59:34.18ID:DiNJqFEB
おっと、>>102>>101 じゃなくて >>100 に対してだよ。
2021/03/19(金) 18:57:42.69ID:RMQx/osX
>>84
比べてないがその用途にmapfileがビルトインなんじゃないの、標準かは知らんけど
2021/03/19(金) 19:00:37.39ID:RMQx/osX
ああ配列使うんだから標準なわけないか
ストリームじゃないからクソデカだと困るか
でも手放せない
106デフォルトの名無しさん
垢版 |
2021/03/23(火) 17:53:11.07ID:laboXhIZ
0、標準入力
1、標準出力
2、標準エラー出力
ですよね?

cat <&0 ってやってなんか文字打ったら
標準入力から入力したものを標準出力に出力するから
入力した行と同じ行が出力されるのはわかるんですが

なんで cat <&2 ってやっても同じように
入力した行と同じ行が出力されるんです?
標準エラー出力から入力するってどういう意味なんです?
2021/03/23(火) 18:14:05.04ID:2hAdV+Tt
$ tty
/dev/pts/0

$ ps
PID TTY TIME CMD
94 pts/0 00:00:00 bash
232 pts/0 00:00:00 ps

$ sudo ls -l /proc/94/fd
total 0
lrwx------ 1 user user 0 Mar 23 17:56 0 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 1 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 2 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 255 -> /dev/pts/0
108デフォルトの名無しさん
垢版 |
2021/03/23(火) 20:33:12.59ID:laboXhIZ
あなるほー
紐付いてんのか
POSIXで決まってたりするんかな?
2021/03/23(火) 22:24:47.39ID:abnhlux1
POSIXで当然定義はされてる
紐付いてんのか(?)のことじゃないけどな
110デフォルトの名無しさん
垢版 |
2021/03/23(火) 22:43:31.00ID:laboXhIZ
標準エラー出力から入力した場合の仕様はどこに書いてるの?
2021/03/23(火) 23:02:58.99ID:abnhlux1
そんな仕様じゃないよ

<&2 という表記だから、標準エラー出力から入力する と思うのはしょうがないけど、多分思い違いしてるぞ
0<&2 は、標準エラー出力のディスクリプタの複製を標準入力のディスクリプタにするだからな

(その時点での)標準エラー出力のディスクリプタがrwで開かれてる tty(/dev/pts/0) で、それの複製なんだから、以下省略
112デフォルトの名無しさん
垢版 |
2021/03/23(火) 23:06:00.65ID:laboXhIZ
> (その時点での)標準エラー出力のディスクリプタがrwで開かれてる tty(/dev/pts/0) で、

これがPOSIXの仕様なの?
2021/03/23(火) 23:17:16.76ID:abnhlux1
0<&2 は、標準エラー出力のディスクリプタの複製を標準入力のディスクリプタにする
これ
そこは、疑問と思ってるようだが仕様での動作として何も疑問はないってこと
2021/03/29(月) 04:33:30.50ID:T/NVAJfs
シェルスクリプトの互換性やら#!の書き方の作法互換性やらbashismやら言われてるけど、みんなmailcap/mime-type使わんの?
2021/03/29(月) 04:41:36.50ID:T/NVAJfs
一応mailcapそれ自体はPOSIX…のはず
ちゃんと各shのmime-typeがそのPOSIXで定義されてるかは不明だけど、IANAとかでは規定あるわけだし
みんな適切に拡張子つければ解決するんじゃないかなって
unix系以外のOSでも対応してるのでPOSIXのみ準拠よりポータブルのはず
2021/03/29(月) 07:07:57.33ID:wK+S1L2g
>>115
なにを言ってるのかわからん。
シェルスクリプトには全部.shという拡張子をつけろとでもいってんの?
/bin/shの実体がdashかbashかわからんって話踏まえてる?
2021/03/29(月) 07:31:02.84ID:HXftsQaM
>>116
だからこそ
application/x-dash; /bin/dash %s
mime-extensions
application/x-bash; /usr/bin/bash %s
mime-extensions
application/x-dash sh dash
application/x-bash bash
なり指定しておけば面倒はないと思ったんだよ(ごめん書式はあってるかしらん)
2021/03/29(月) 07:32:42.67ID:wK+S1L2g
>>117
だから /bin/sh になにを設定するのか教えて
2021/03/29(月) 07:34:02.79ID:HXftsQaM
ああ、/binとかに標準で入ってるのは大体.sh付いてないお行儀悪いのばっかだから不味いか…
今時配布するスクリプトには大体付けると思うけど、こればっかは仕方ない
2021/03/29(月) 07:34:21.19ID:wK+S1L2g
もう一つ。

gunzip という"シェルスクリプト" に
どういう設定をすれば良いのか教えて

$ file /bin/gunzip
/bin/gunzip: POSIX shell script, ASCII text executable
2021/03/29(月) 07:34:58.94ID:wK+S1L2g
>>119
実行ファイルには拡張子をつけないのが
"正しい" 作法ですが?
2021/03/29(月) 07:35:28.60ID:HXftsQaM
>>118
できるだけ互換なのを関連付けるのがベストプラクティスじゃないかな
2021/03/29(月) 07:36:04.54ID:wK+S1L2g
>>122
だから誰がつけるのよ?

シェルスクリプト配布時に作者が
どうやってつけるの?
2021/03/29(月) 07:36:41.97ID:HXftsQaM
>>121
どう考えても良くない習慣だと思うよ…
2021/03/29(月) 07:39:18.53ID:HXftsQaM
>>123
それはユーザー側でやるべきことだと思うけど、
sudo 要求できるならecho ... >>って手もあるかも
2021/03/29(月) 07:42:17.96ID:wK+S1L2g
>>124
良くない習慣だと言ってる人はだれもいません。
実際にディストリに含まれる実行プログラムで
実装言語の拡張子をつけてるプログラムは一つもありません
Ruby、Perl、Python、拡張子がついてますか?

そもそもさぁ、作者が 拡張子 .sh つけたとしても
じゃあ、これを何で動かせば良いのさ?

/bin/sh が bash だって言ってんだろ
2021/03/29(月) 07:50:37.48ID:T/NVAJfs
>>126
ちゃんとユーザーがどのインタプリタ(*sh、.py etc)で実行するべきか分かるように拡張子を付けるようにしましょう、って提言してる

そりゃインタプリタはインタプリタ名が自身を現してるから付ける必要は無いけど、解釈されるスクリプトには付けない理由は無いでしょう
パス決め打ちに依存するシバンより確実にインタプリタを指定できるわけだし
2021/03/29(月) 07:56:33.90ID:wK+S1L2g
>>127
> ちゃんとユーザーがどのインタプリタ(*sh、.py etc)で実行するべきか分かるように拡張子を付けるようにしましょう、って提言してる

少しは想像力ないのか?

作者が、.sh という拡張子を使って配布して
それをユーザーが、.bash に変更するようにしましょう
とお前が言っていて

そうするとファイル名変わるから、その .sh が
呼び出せなくなるだろ

ぐらいのこと思いつかんのか?
2021/03/29(月) 07:57:55.93ID:wK+S1L2g
訂正

そうするとファイル名変わるから、その .sh を
内部で呼び出すスクリプトが動かなくなるだろ
2021/03/29(月) 07:58:26.46ID:wK+S1L2g
だいたい「拡張子をつけないのが常識」だから
シバンというものがあるんだがな
2021/03/29(月) 07:59:44.04ID:qWZz7CCC
焦りすぎだ落ち着けw
2021/03/29(月) 08:04:34.67ID:wK+S1L2g
落ち着いてるw

そもそも拡張子ではどのインタプリタで動かすのかわからないという前提があるのに
今更何を言ってんだこいつって話
2021/03/29(月) 08:04:56.34ID:T/NVAJfs
>>128
拡張子は配布者が指定するんだよ、誤解を招いたみたいですまん

ここまでシバかれるとは思わんかった…
実行ファイルに拡張子付けるのが気に入らんなら、ファイル先頭付近のコメントにmime-typeを書いておけば検知されるわけだし、これなら既存の慣習と衝突しない落とし所としてどうだろ?
2021/03/29(月) 08:12:16.40ID:T/NVAJfs
>>132
zshくらい所謂shと違うと、.zshと付いてること多いけど、bashくらいの分かりにくい拡張だとshと付けたくなるのは分かるなあ
2021/03/29(月) 08:12:32.79ID:wK+S1L2g
>>133
> 実行ファイルに拡張子付けるのが気に入らんなら
気に入る気に入らないじゃなくて、拡張子をつけてはならない。
それともお前はwhichコマンドを、which.shに変更しろって言う気か?
2021/03/29(月) 08:17:34.76ID:T/NVAJfs
>>135
規格で決まってるコマンドはそりゃ付けちゃだめだよ
それ以外は気にいるか気に入らないかの問題でしょう
気にならないなら拡張子を付ける、気に入らないならmailcapが見つけられるようコメントにmimeを書く
2021/03/29(月) 08:19:14.60ID:wK+S1L2g
> それ以外は気にいるか気に入らないかの問題でしょう

違う。互換性の問題
実装言語を変えても、互換性は保たれなければならない
2021/03/29(月) 08:22:32.70ID:T/NVAJfs
>>137
なるほど、やっぱ拡張子はダメですね…アホなこと言ってました
コメント自動検知の方は何か見落としないですかね?
2021/03/29(月) 08:26:40.81ID:wK+S1L2g
OSの仕様として二行目にシバン2を作れって話?w
2021/03/29(月) 08:35:53.68ID:wK+S1L2g
結局はシバンを/usr/bin/env bashとかにすれば同じこと
2021/03/29(月) 08:40:37.26ID:T/NVAJfs
>>139
まさにその為にPOSIXへ導入された機構なのではないでしょうか?
mailと付いているのはメール方面で発展したからかな?と気になりますが
先頭付近に書いておけばrun-mailcapが検知してくれますよね、vimのモードラインみたいに先頭5行のような明確な判定法ってないんですかね?
ブラウザなんかはヒューリスティックで上手く決めてくれますけど、
2021/03/29(月) 08:50:40.11ID:T/NVAJfs
>>140
シバンが先頭占めてるので、GUIで適当にポチポチする人や、中身知らんけど取り敢えず./scriptで実行しちゃう人にはスルーされちゃうんですよね…
イマイチ強制力がないというか
win、linun、unix、macどこでも同じコマンド/クリックで同じように実行できるのは便利なんですが
2021/03/29(月) 08:58:49.98ID:wK+S1L2g
マジ意味不明
どんな手段でもいいからファイルの上の方に書いてある
なにかに従って実行ファイルを動かすツールをもってこい
話はそれからだろ
2021/03/29(月) 09:14:27.76ID:T/NVAJfs
>>143
いや、だからそれがrun-mailcapでは…

ところで、debianのman読むと、最終的にfileコマンドにフォールバックしてmime-typeを決定するとか非常に不吉な事書いてますね!?
うちのfileはシバンから推測(bashとshの区別など)してたと思うので、一旦mailcapを参照する事によるパス非依存性以外に利点がない気がしてきました…
決定アルゴリズムが統一されてないのが課題ですかね
winはもちろん違うでしょうし、unix系でもメーラ/ブラウザは固有の方法で決めてますし

第4のシバンを待つしかないのか!
2021/03/29(月) 09:16:56.36ID:wK+S1L2g
>>144
なら、run-mailcapでいいじゃん。

あとは何をしてほしいんだ?
run-mailcapが要求する何かをすれば終わりだろ
2021/03/29(月) 09:18:26.85ID:SSJ6OpUN
うだうだと意味不明だな
シバンは(低レベル)OS API(exec系)でサポートされてるんじゃなかったかな
mime-typeを仮にサポートしてるOSがあってもせいぜい高級APIでじゃないの

何を言いたいのかさっぱりわからん
2021/03/29(月) 09:30:51.89ID:T/NVAJfs
>>146
スレを眺めるに高級環境っぽいので、posixの話はアリかと思いまして
ただ、shを名乗っててもbusyboxとか組み込みだと無さそうな気がしますね(調べてない)
普段コマンドラインに住んでますがすごく便利ですよmailcap
ただ、色々突っ込んで貰ってenvも良さそうな気がしてきました
2021/03/29(月) 09:33:26.88ID:wK+S1L2g
>>147
だから、mailcapがやってくれるんだろ?
シェルスクリプトの作者がやることはなにもないじゃん
2021/03/29(月) 09:36:04.57ID:SSJ6OpUN
OSレベルでもなくツールで便利だったからかよ?
自分が便利でしかないことをうだうだうだうだとかよw
2021/03/29(月) 09:36:15.38ID:T/NVAJfs
>>148
シェルスクリプト書く人の話ですよ
実行環境を指定するのに、シバンでパス直打ちか、envか、mailcapか、ということです
2021/03/29(月) 09:38:32.42ID:wK+S1L2g
>>150
だからmailcapとかいう実行環境を指定するために
何をすれば良いのか聞いてるんだが
2021/03/29(月) 09:43:42.09ID:SSJ6OpUN
mailcapではないがmime-typeをサポートしてるOSがあるんだが。ある意味OSレベルでサポートしてる
作法が多分違うと思うが、それはそれでmime-typeにある意味固執して使うのかなあ?
めんどくささの方が上回りそうだけどw
2021/03/29(月) 09:44:13.43ID:T/NVAJfs
>>151
普及運動ですかね…
2021/03/29(月) 09:49:41.80ID:SSJ6OpUN
既存の色々を知らなさすぎるのに普及運動とかは無理だろうとしか思えない
OSレベルでサポートしてるOSのでもそんなことやってるヤツ見たことないしな
2021/03/29(月) 09:52:18.11ID:T/NVAJfs
>>154
はい、当たり前と思ってたら色々目からウロコで
また勉強して建設的な議論ができるようになったら戻ってきます、皆ありがとう
2021/03/29(月) 09:59:52.36ID:Hi4CyJOB
>>137
あるいは、実装の詳細をファイル名に漏出させないため、やな。
ユーザーには関係ないし、開発者のフリーハンドを大きく残しとけるしな。
2021/03/29(月) 10:01:28.74ID:wK+S1L2g
>>153
普及運動したってmailcapに機能が搭載されてなければ出来ないだろ

だから早くいえmailcapを使うとして
シェルスクリプト作者は何をスレば良いんだ?

実は何もしなくて良いんだろ?w
そもそもmailcap使っても出来ないことだからwww
2021/03/29(月) 10:02:18.72ID:/i/qkskJ
webだとみんなmimeでインタプリタ決めるしな
その方面で育つとカルチャーショック
2021/03/29(月) 10:03:55.77ID:SSJ6OpUN
>>158
そういう流れかあ。それっぽいな
2021/03/29(月) 10:05:03.53ID:wK+S1L2g
× webだとみんなmimeでインタプリタ決めるしな
○ ウェブサーバーだとみんなmimeでインタプリタ決めるしな

ウェブサーバー側の設定でやるから
スクリプトの作者は何もする必要がない
ウェブサーバー側に相当する何かを用意すればいい
2021/03/29(月) 10:09:45.64ID:SSJ6OpUN
読めてないんじゃないの。そんな具体的な話でないぞ
2021/03/29(月) 10:12:06.19ID:wK+S1L2g
そういう話だよ
2021/03/29(月) 10:13:08.06ID:SSJ6OpUN
まあ、ご自由に。話が繋がるとは思えないけど
さて
2021/03/29(月) 10:21:39.61ID:mn0uwvfX
自分で設定するのは面倒、色んな環境の初期設定が揃ってよろしくなってからかな
2021/03/29(月) 15:38:51.51ID:Hi4CyJOB
潔癖症とか完璧主義者とかがUNIX系のもろもろをキモく感じるのはわかる。
とくに最初のころ。

馴れてくると、だいたい気にならんくなってくる。
それがいいことかどうかはわからんけど。w
2021/03/29(月) 15:48:26.38ID:jeDqT5qX
>>126
うちのはデフォルトで/bin/shがzshになってるよ
2021/03/29(月) 17:08:18.30ID:wK+S1L2g
>>166
デフォルトで/bin/shがzshのシステムが有るなら教えて
聞いたこと無いぞ
2021/03/29(月) 17:44:52.06ID:jeDqT5qX
>>167
macOS Catalina
以前は手を入れないとダメだったらしいけど
現バージョンは最初からzshになってる
2021/03/29(月) 17:47:55.60ID:T/NVAJfs
めっちゃ右翼だなそりゃ…
仕方なく読む專だからわからんのだけど、zshもshっぽく振る舞うモードとかあるんじゃないのさすがに限度ってものがあると思うが
2021/03/29(月) 17:51:37.76ID:jeDqT5qX
>>169
単にGPL汚染だったからと言われてるけどApple側から説明はないので不明
bashのv4からGPL3になったのが理由だと思う
2021/03/29(月) 17:53:39.75ID:wK+S1L2g
>>168
> macOS Catalina

どーせそういうと思ったw
なんつーか、みんな基礎的な知識がないよな

あ、macOS Catalinaの/bin/shは(POSIXモードの)bash 3.2.57 だ
これからもずっと変わらんだろうよ
2021/03/29(月) 17:56:44.94ID:jeDqT5qX
>>171
現バージョンはzshになってるよ
確かめてみ
2021/03/29(月) 17:58:03.88ID:jeDqT5qX
なおBigSurは最初からzsh
もうbashには戻らんだろうね
2021/03/29(月) 18:01:27.34ID:wK+S1L2g
>>172
お前が確かめろや

/bin/shって入力して、プロンプトになんと表示されるか言ってみろ
2021/03/29(月) 18:04:28.54ID:1/gzKsrI
ログインシェル と /bin/sh は違うぞ
/bin/sh がなんなの確認してみ
2021/03/29(月) 18:06:21.42ID:jeDqT5qX
>>174
とっくに確かめてるって
BigSurはまだ更新してないから聞いただけだが最初からzsh
わからん人だね

そんに疑うなら自分でやってみ
2021/03/29(月) 18:07:44.45ID:jeDqT5qX
>>175
zshにリンクされてるね
2021/03/29(月) 18:07:48.03ID:wK+S1L2g
>>176
俺が聞いたのは、プロンプトになんて表示されるかだ
なぜ質問に答えられないのか?
それだけなんだが?
レスするよりタイプ文字は少ないだろ

ああ面倒だw

答えは、sh-3.2
bash 3.2の3.2だ

なにか言い返す言葉はあるか?
2021/03/29(月) 18:08:14.41ID:1/gzKsrI
>>176
確かめてないだろw
冷静にもう一度ちゃんと確かめてみ

>macOS Catalina
>以前は手を入れないとダメだったらしいけど
ってのからも明らかにログインシェル=/bin/shだと思ってるだろうし
2021/03/29(月) 18:10:30.37ID:wK+S1L2g
>>177
されてない

それどころかbashにもリンクされてなくて
ファイルサイズはbashとzsh(ほぼ同じぐらい)の1/10程度しかない

これは/bin/shがbashをベースにPOSIXに準拠するだけの機能に
減らしてビルドした縮小版だからだ
2021/03/29(月) 18:13:42.46ID:1/gzKsrI
>>177
嘘なのかw、マジでそうならなんかおま環くさい
/bin/shがコロコロ変わったら困るから(コロコロ変わる必要もないしな)、なんらか(chsh)でそうなるわけもなく、なんでそうなんか...嘘くさいww

BigSurはまだ更新してないからってことは、Catalinaか...尚更嘘くさい
そんな変なの捨ててクリーンインストールしなさいなww
2021/03/29(月) 18:14:08.54ID:wK+S1L2g
しかしmacOSの/bin/shが、bashやzshの1/10にまでサイズが減ってるとなると
本来のbashに比べて/bin/shは相当機能が削減されたbashだと思うけど何が減ったんだろう?
/bin/shはbashのインタラクティブシェルとしての機能を削っただけかな?
2021/03/29(月) 18:16:02.09ID:qWZz7CCC
チャーリー浜「...」
2021/03/29(月) 18:16:35.62ID:wK+S1L2g
そういやqiitaかなんかでmacOSの/bin/shを最新のbashに
アップデートしましょうとか書いてあった記事があったな
Apple版bashじゃなくてbash本家からビルドしてsudoでcpしてw
システム壊す気かって思ったwww
2021/03/29(月) 18:25:27.61ID:1/gzKsrI
>>183
そこまで書いたなら書いてよw
一瞥でなんのこっちゃと思った。それが狙いかも知れんが
2021/03/29(月) 18:30:46.99ID:wK+S1L2g
ふ、黙った所を見ると終わったかね?素人が俺様に敵うわけねーだろ
2021/03/29(月) 18:33:56.47ID:1/gzKsrI
お前はそれを冗談で言ってなさそうなとこがな
2021/03/29(月) 18:34:14.26ID:5I9+wJCt
動いてるなら必要十分だよな
bashはもうバージョン5だし、補完やらのAPIを外部に晒したのが成功して、対話モードが随分良くなった
2つ入れるのはアリだと思う
名前も念の為分けといた方がいいかもしれない(俺はサボったけど)
ただ、呪文のようなパラメータ置換をモリモリ実装してるのは頭おかしいと思う
外部コマンド使え
2021/03/29(月) 18:35:37.53ID:wK+S1L2g
> ただ、呪文のようなパラメータ置換をモリモリ実装してるのは頭おかしいと思う
> 外部コマンド使え

1/1000ぐらいにパフォーマンス下がるぞw
数値は適当だが
2021/03/29(月) 18:38:16.17ID:wK+S1L2g
外部コマンドはパフォーマンスが大幅に低下するだけじゃなく
改行をうまくあつかないという問題がある
変数には改行を入れられるが、外部コマンドだと行区切りとして扱われる
2021/03/29(月) 18:46:02.19ID:CpwX2Qd/
そういえばCatalinaだとこれ↓見ろってでますね
https://support.apple.com/kb/HT208050
2021/03/29(月) 18:59:51.55ID:wK+S1L2g
>>191
> macOS Catalina の Bourne 互換シェルとのスクリプトの互換性をテストするには、
> 「/var/select/sh」を「/bin/bash」「/bin/dash」または「/bin/zsh」に変更してみます。

それみてmacOSの/bin/shのサイズが1/10しかない理由がわかったw

man shすれば書いてあったが、macOSの/bin/shはシェル本体じゃなくて
シェル(/var/select/sh、デフォルトは/bin/bashへのシンボリックリンク)
を起動するためのコマンドなのか

どおりでstrings使ったらbashやzshといった文字が見つかるわけだ
/bin/sh をデフォルトのbashから別のシェルに変更したい場合は
シンボリックリンクを変更すれば出来るんだな

ってことはやっぱり単にPOSIXモードが有効になったというだけのbashなのかもな
2021/03/29(月) 19:55:41.76ID:1/gzKsrI
>>191
/bin/dash ってあるから、
次か次の次かで /bin/sh は bash を捨てて(流石に捨てるだろう3ベースのなんて。kshがまだあるから同じように残るか??) の dash になる可能性が大な感じ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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