シェルスクリプト総合 その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/04/06(火) 11:27:15.77ID:WaPRNDqz
>>442
なるほど
使い勝手がいいからちょこちょこ(リアルでもw)使うエセ関西人やけど、
「やったらな」ってムズいなと感じ、もしかしたらとちょっと興味が出ただけです
お答えありがとうございましたw
2021/04/06(火) 19:56:38.86ID:TgvwVymv
くだらないスレだな
2021/04/06(火) 22:33:28.43ID:ceQksYZ9
と、くだらないレスしたがり
446デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:39:22.59ID:1S4Ftpl7
>>237
# シェルスクリプトマガジン vol.30
# POSIX原理主義の逆襲
url=$( echo '/M57C8NB70B/pd/koobe-哲寛仲當-03-lov-ンジガマトプリクスルェシ/pj.oc.nozama.www//:sptth' | rev )
/usr/bin/firefox "$url"
xdg-open "$url"
# /usr/bin/google-chrome "$url"
2021/04/10(土) 21:47:45.62ID:AcLZ31++
クソな名前出すな
2021/04/11(日) 13:12:18.88ID:kxus16p0
revはちゃんと文字単位でひっくり返してくれるんだ?
へぇー
2021/04/11(日) 13:26:48.64ID:kxus16p0
>>250
デスクトップ向けlinuxだと4KiBくらい貯めるのかな
改行のありなしやら入出力がターミナルかやら(test -t)で決めてるみたい?
tr -d \\nで改行絞った小さなテキストが延々と出てこなかったりするな
何が起きてるのか正直分からん
2021/04/11(日) 17:47:40.37ID:+rFBum4X
Standard C Library の FILE の挙動
Cでプログラム書いてみればわかるよ
2021/04/14(水) 19:37:11.29ID:35zwdl55
> ・csh/tcshでのシェルスクリプトは*まったく推奨しません*

マジだった。ちょっと興味本位でやってみたら
変数に改行を入れようとしただけで力尽きるとは思わなかったわw
2021/04/15(木) 03:22:43.97ID:06Qz2l+r
>>2の最後の行、ゆうなって馬鹿みたいだから正しい言葉遣いに直してほしいなぁと思うのは私だけ?
2021/04/15(木) 05:04:20.88ID:5nOuM6c9
言うなをゆうなって綴るの関西弁かな
2021/04/15(木) 07:26:46.96ID:kVBfEodl
言うをゆうと発音するのは標準語
言うをゆうと書くのはただのバカ
2021/04/15(木) 10:26:01.70ID:CT+ncMKm
半分ネタやろ。
どうでもええわ。

どうしてもイヤなら、次スレを自分でたてて直せ。
2021/04/15(木) 11:21:03.44ID:cwo7XkJi
>>449
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/setbuf.3.html
これ。書いてある通りそのままの動作だろう。4Kとかデフォルトは C Library による
コマンドで制御できるのは>>248のstdbuf
stdbufのソースは、FILEのこれらは外から制御なんてそもそも考えてないのでトリッキーなことして面白い
2021/04/15(木) 11:49:33.19ID:CT+ncMKm
$SHELLOPTSに「interactive-comments」と入ってるんだけど、これは何?
man bashには記述がない。。。
2021/04/15(木) 12:00:32.18ID:cwo7XkJi
man bashにもあるやん
# 以降はコメント/無視するだって
2021/04/15(木) 12:38:40.16ID:wukWzou0
"いい"も口語なんでauto。ちゃんとposix使ってください
2021/04/15(木) 13:42:52.38ID:EYZytY4L
>>456
あざっす
システムプログラミングアレルギー(manで2/3出てきたらそっ閉じ)なもんで…

sedとか-u(unbufferd )オプション付いてていいね、チョロチョロ出てくるのも想定してるんだろう
他はstdbuf効くならば試行錯誤って感じで凌いでるけど、もう腹括る時だろうか…
2021/04/15(木) 13:47:44.84ID:EYZytY4L
>>451
ちょうど'94年のcomp.lang.unixのfack読んでたとこだけどcshナウいぜって空気でノスタルジー
問題のリダイレクト関連は(入れ子)でサブプロセス内/外のリダイレクトを切り分け頑張るアンサーが面白かったです
2021/04/15(木) 13:50:07.80ID:EYZytY4L
unixはlangじゃねえわcomp.unix.*ですごめん
2021/04/15(木) 14:02:10.00ID:ddLCV2xW
いまもcsh/tcsh使ってる人っているんだろうか?
shが神に見えるんだが
shからすれば、csh/tcshはcmdと同レベル
2021/04/15(木) 14:31:45.46ID:Hr/L3ezh
昔のshはそれはそれでクセがあったみたいだぞ、faqによると
誰もが一度は躓く
cmd |while ..
do change v
done
echo $v
問題ももっと酷くて、whileへ<inすらもアウトだった

そもそもリダイレクトはフォークする必要無いよね?バグみたいなもん?
なおパイプラインはフォークしてナンボなので合理的な設計だと思ってます
オプションlastpipe提供が現実的な妥協点かなと
465462
垢版 |
2021/04/15(木) 14:33:04.56ID:Hr/L3ezh
です
2021/04/15(木) 14:42:31.76ID:gZ/E9OPr
>>460
ちなみに、
unbufferdだけでいいんじゃあって場合、
setbuf -o0 command1 | setbuf -o0 command2 | command3
setbuf -o0 command4 | command5
...
でなくて、冒頭で、
export LD_PRELOAD='/your/location/libstdbuf.so'
export _STDBUF_O=0
ってすると、以下外部コマンドは全て setbuf -o0 をすることになる
2021/04/15(木) 14:56:50.94ID:Hr/L3ezh
>>466
環境変数という手があったか
(いざ困るまでは)もちろんバッファはあった方が良いので、exportするスクリプトを書くと親からうっかりsourceしてしまいそうで…

env/インライン代入 パイプライン
にしといた方が安全そうですかね?
2021/04/15(木) 15:03:30.09ID:Hr/L3ezh
そもそもsourceしまくるのがお行儀悪いから、そっちを控えるべしなのかな?
何でもシェル関数にしてそれをソースしまくるパッケージを入れてしまって、bash -xオプション付けると何か操作する度に画面が数ページ流れてうんざりした経験が…
2021/04/15(木) 15:41:44.39ID:CT+ncMKm
>>458
ども。
探し直したよ。
あー、$SHELLOPTSではハイフンだけど、manページだとアンダーバーになってんな。。。
2021/04/15(木) 18:10:56.52ID:ddLCV2xW
>>468
マジに質問したいんだけど
sourceを何をするときに使うコマンドだと思ってる?
2021/04/15(木) 19:33:19.08ID:hKlH1+Q2
>>467
>env/インライン代入 パイプライン
stdbufを使うのと変わらないんじゃない
使うの局所化したいんだったら ( ) でサブシェルにするとかかな
472デフォルトの名無しさん
垢版 |
2021/04/17(土) 05:11:50.36ID:YdwasajV
>>446
URL=$( echo '/swenybb/ten.hc5.enildaeh//:sptth' | rev )
TMP_DIR=~/tmp/5ch; DOC=${TMP_DIR}/index.php; mkdir -p ${TMP_DIR}
wget --output-document=${DOC} ${URL} || exit 1
iconv -c -f Shift_JIS -t utf-8 ${DOC} \
| grep '2021' | awk -F '</a> <br>' '{print $1}' \
| awk -F '</font>]' '{print $2}' > "~/Documents/5ch_dv.txt"
i=1; while true; do
cut --bytes=1-210 "~/Documents/5ch_dv.txt" | shuf -n 2; sleep 10; done
473デフォルトの名無しさん
垢版 |
2021/04/17(土) 19:55:09.09ID:woV5WRvk
URL=$( echo 'fdr.wkwen/ssr/pj.en.oog.hcraes//:sptth' | rev )
TMP_DIR=~/tmp/goo; DOC=${TMP_DIR}/index.php; mkdir -p ${TMP_DIR}
wget --output-document=${DOC} ${URL} || exit 1
iconv -c -f utf-8 -t utf-8 ${DOC} | grep -v 'gooウェブ検索 急上昇ワード' \
| grep 'title' | awk -F '<title>' '{print $2}' \
| awk -F '</title>' '{print $1}' >> "$HOME/Documents/goo_web.txt"
while read KEYWORD; do
URL=$( echo '=yreuq_hcraes?stluser/moc.ebutuoy.www//:sptth' | rev )""$KEYWORD""
firefox "$URL"; sleep $( shuf -i 10-21 -n 1 )
done < "$HOME/Documents/goo_web.txt"
2021/04/17(土) 19:55:27.64ID:HVVFTxep
きたねーコードであらすな
475terai
垢版 |
2021/04/27(火) 17:28:08.57ID:K85aNu+Y
Linux(CentOS7)からsshで192.168.1.50(windows)に接続して、grepでD:\samba-backup\tmpの中を探して、
"bk-日付.tar"という名前のファイルがあれば"backup = O"、なければ"backup = O"と表示されるようにしたいと思い以下のようにシェルスクリプトを書きました。
if expect -c "
set timeout 5
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\samba-backup\\tmp
expect \"password\"
send \"パスワード\n\"
expect eof
exit
"|grep "bk-$(日付).tar"
then echo "backup = O"
else echo "backup = X"
fi
実行すると"backup = O"と表示されると思ったのですが、"backup = X"と表示されます。tmpフォルダには"bk-日付.tar"という名前のファイルが確かに置いてあります。どうすれば"backup = O"と表示されるようになるのか教えてください。よろしくお願いいたします。
2021/04/27(火) 21:13:37.71ID:veDN2Ote
複雑な問題は複数のより単純な問題に分割すればいいんじゃないかな
まずは expect だけ実行して何が出力されるかみるところから始めなよ
477デフォルトの名無しさん
垢版 |
2021/04/27(火) 22:41:50.05ID:1A6wmpHM
batの問題じゃないの
2021/04/28(水) 06:11:06.05ID:M5uDUSOh
"|grep "bk-$(日付).tar"
tmpフォルダには、"bk-日付.tar"という名前のファイルが確かに置いてあります

この「日付」って、日本語を使っているの?
基本的に、半角英数字・ascii 以外は、動かないのでは?

日本語には、CP932・UTF-8/16/32 の4つのエンコードがあって、
各OS・ファイルシステム・端末の入出力によって異なるから
2021/04/28(水) 06:38:05.23ID:xybfukyI
中途半端の知識。自分が詳しいつもりになってそう。
素人同然だから1から勉強してね
480478
垢版 |
2021/04/28(水) 06:50:30.51ID:M5uDUSOh
そもそも、Linux から、cmd とか、Windows のコマンドを呼べるの?
Remote Login してるの?

PuTTY, TeraTerm, VSCode のRemote SSH などを使えば?
2021/04/28(水) 07:31:16.23ID:QZeYlOuK
>>480
>Linux(CentOS7)からsshで192.168.1.50(windows)に接続して
って書いてるじゃん
>>478もわかってなさそうだぞ
482terai
垢版 |
2021/04/28(水) 10:22:09.08ID:D1qJru6v
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\samba-backup\\tmp
のところを
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\\\samba-backup\\\\tmp
にしたらうまくいきました。ご迷惑をおかけしました。
483478
垢版 |
2021/04/28(水) 10:55:25.45ID:M5uDUSOh
例えば、Windows 10, WSL2, Ubuntu 18.04, Ruby では、
Linux 側から、Windows側のC ドライブへアクセスできる

パス区切りも、/ を使える。
\ では、各端末でのエスケープを考慮しなければならないので、非常に難しい

Dir.glob( '/mnt/c/Users/Owner/Documents/test/**/*.txt' ) do | full_path |
next if File.directory? full_path # ファイルだけを処理する

p full_path
end
2021/04/28(水) 11:50:29.51ID:Ttx7vHwT
sshを使うなら、ええかげんにexpectなんかせんでもええようにしたほうがええんちゃう?
鍵ファイルを使えば。
485478
垢版 |
2021/04/28(水) 12:15:20.00ID:M5uDUSOh
Ruby にも、expect モジュールがある
2021/04/28(水) 12:59:54.72ID:bPhU0BTO
>>484
それは思う
セキュリティ的にも運用的にも楽だし
2021/04/28(水) 16:16:23.22ID:mi6bhbk3
だよな
488デフォルトの名無しさん
垢版 |
2021/04/28(水) 18:13:04.67ID:xybfukyI
ファイルの中に書いたマーカーの中に別のファイルを挿入するにはどうしたらいい?
例えばこんな感じのファイルがあったとして、<marker>〜</marker>の中身を
別のファイルに入れ替えたい。posixコマンドだけで

aaa
bbb
<marker>
ccc
ddd
</marker>
eee
fff
2021/04/28(水) 18:34:58.14ID:a9uMhLuq
awkだけでなんとでも書けそう
2021/04/28(水) 18:39:28.46ID:goIH39T4
だよな
釣りか?
491デフォルトの名無しさん
垢版 |
2021/04/28(水) 18:46:45.34ID:xybfukyI
C言語でもどんな言語でも書けるというだけのことなら
私も知ってますが・・・
2021/04/28(水) 18:50:26.24ID:snsrMSzN
csplit
cat head anotherfile rest
2021/04/28(水) 18:55:44.80ID:snsrMSzN
ただ行単位で分割なので適当にタグ前後に改行挿入などよしなに
2021/04/28(水) 19:02:11.38ID:snsrMSzN
csplitで2回割って3つに、真ん中を捨てcatを想定したが、regexで割れるので<marker>...</marker>を指定して一回で割った方が素直かもしらん
ファイル内に複数回マークアップが現れる時も、マークアップ+1個に割れるのでスケーラブル
495デフォルトの名無しさん
垢版 |
2021/04/28(水) 19:11:21.62ID:xybfukyI
ファイルに複数回現れるのは想定してませんでしたが
その場合は全部置き換えたいです

中間ファイルを作るのは一時的であっても
想定してないファイルができるので避けたいです
2021/04/28(水) 19:14:50.05ID:mi6bhbk3
>>491
awk で、
行単位で出力制御できる、フラグなども自由に作れる使える
標準入力以外の入力ソースから読める
って、材料あるんだから簡単にできるだろ
>>479って言ってるのに、何、>>491とか言ってるんだかw
2021/04/28(水) 19:19:23.15ID:snsrMSzN
じゃあsedとかでいいんじゃね、行志向だとフラグ立てる必要があるので面倒だから、一時的にtrで改行を変な文字に置換して一行扱いすると楽
複数回マークアップするなら、非貪欲マッチの為に終わりマーカーを^指定するのを忘れないでね、念の為
2021/04/28(水) 19:22:31.94ID:snsrMSzN
>>496
素直な質問者かと思ったらこんなレスしてんのなあ…
2021/04/30(金) 02:47:41.34ID:UkwhHCBd
>>497
オプション--null-dataをつけたらええやん?
500デフォルトの名無しさん
垢版 |
2021/05/01(土) 16:16:25.77ID:R5WysE71
今日の発見

何気なく LANG=C の状態で man ping をやったら日本語マニュアルでは出て来なかった -a を発見。
しかし、 "Audible ping. " ってなんだろうと思い、 -a を付けて ping をやってみるが -a なしと違いはない。
何だろうと散々悩んでまさか本当に音が出るのではと思い、ヘッドホンを指して聞いてみたら BEEP 音が出ていた。
(端末に Ctrl+G の出力しているだけの模様)。

これは普通の状態で音が出るようになってないと使えない(というか分からない)機能だな。
ていうか、この機能って需要あるのか? どういう時に使うんだ? (耳は聞こえるけど目が見えない人向け?)
501デフォルトの名無しさん
垢版 |
2021/05/01(土) 16:29:28.92ID:djtwQ/hU
システム言語英語にしてるから気づかなかった
2021/05/01(土) 16:33:54.50ID:8vBq+4lu
目が見えないなら読み上げとか使うだろうし
ただのユーモアのような気がする
2021/05/01(土) 17:12:17.40ID:/E4OYG0J
>>500
https://lab.kuas.ac.jp/~ippei94da/unixtodaystips/index.html#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E5%B0%8E%E9%80%9A%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF
まあ、本気でやるならスクリプトを書くところやけど、ちょろっと待ったり確認したりするだけなら?
2021/05/01(土) 17:24:56.48ID:qPtffzbe
まあBEEPだと鳴るにしても、あんまり便利じゃないから、bellってスクリプトつくって、mpg123で小さなサウンドファイル鳴らしてたなーw
時間のかかる処理動かすときに、;bellとかやってたわw
505デフォルトの名無しさん
垢版 |
2021/05/01(土) 20:54:25.86ID:mMPVMQKF
>>500
日本語マニュアルは古いからな
Ubuntu 20.04のbashのマニュアルなんか
英語版は当然bashのバージョンと同じ5.0(2018年)のマニュアルが入ってるが
日本語版だと4.2(2010年)のやつだからな

あとpingに音がなる機能は便利だぞ
pingで音を鳴らしながら断線チェックするんだよ
断線しかかってるケーブルがあれば触った時に音がなったり止まったりするだろ
一人がディスプレイの前にいて「あ!そのケーブル触ったときに繋がりました!」
なんて叫ぶ必要がなくなるから、一人でも作業できる
2021/05/01(土) 21:24:12.83ID:j1QPmhQJ
>>805
その最後の為にってのが本当かもね
https://ftp.arl.army.mil/~mike/ping.html
同じこと書いてる。当時は-aは無かったようだが
2021/05/01(土) 21:43:09.83ID:j1QPmhQJ
>>506
>>505 の間違い
army.mil って、米軍(組織の一部)のサイトか
軍人か。pingって名付けるのも発想も納得だな
508デフォルトの名無しさん
垢版 |
2021/05/01(土) 22:42:41.06ID:mMPVMQKF
軍人は卓球が好きだったんか?
2021/05/01(土) 22:53:01.56ID:/E4OYG0J
https://gigazine.net/amp/20200809-story-of-ping
もあるな。

しかし、Navyならわかるが、Armyなの?w
2021/05/01(土) 22:56:49.66ID:oDxNWiQE
軍関係者、それも技術者研究者ならそんなナワバリとか無いんじゃね
陸軍でも海軍のそういうのは知ってはいるだろう一般知識的な
事故死で亡くなってるのね。世界的貢献度が高いし有名だから残してもいるのかな
2021/05/01(土) 22:59:35.67ID:oDxNWiQE
>>508
全然関係ないぞ、ソナーのって書いてるじゃん?
冷戦時潜水艦戦な小説読めばわかるぞ
まあ、ボケなんだろうけど
2021/05/02(日) 00:08:11.78ID:r2Ed4Ypi
>>505
ナルほどナルほどw確かに便利だねw
昔、ネットワークエンジニアやってた時を思い出してほのぼのしてしまったw
2021/05/02(日) 00:20:14.06ID:AuvpVVY/
>>508
それはping-pong。
ちなみにping-pongにしようとしたが商標の関係でpongだけになったパターンが。
2021/05/02(日) 01:01:49.26ID:AuvpVVY/
BSD系のpingは応答があるとき鳴るのとないとき鳴るのと2つオプションがある。
2021/05/09(日) 03:33:23.42ID:DzKdtz/a
ほんとこの人酷いわ。関わりたくないからここで書くけど
バカにされてる事にも気づかないでしゃしゃり出てきてこのセリフ

https://twitter.com/col_richie/status/1390912236181364737
> 何を隠そう私こそPOSIX原理主義者。
>
> 「藪医者」の語源(の一説)が面白いので紹介しておきたい。
>
> 藪医者とは、高価な薬が買えずに藪から薬草に使えそうな草を見繕って患者に与えていた医者のことだという。
>
> つまり適当にライブラリーを拾って解決を図るプログラマーは藪医者同然ということになる。

じゃあ藪医者ではない凄腕の医者は自分で薬を作ってるのか?
お前だって自分で作らずにPOSIXコマンドを使って解決してるだけだろ
他人の成果を利用してるだけのくせに自分で何も作らずに主義だけでマウント取ろうとするな
藪医者の語源を自分の主義を正当化するために曲解して利用するな
まさにPOSIX"原理"主義者だと思うわ

https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%AA%E3%82%B9%E3%83%88%E6%95%99%E5%8E%9F%E7%90%86%E4%B8%BB%E7%BE%A9
> キリスト教原理主義(キリストきょうげんりしゅぎ、英語: Christian fundamentalism)とは、
> 特にアメリカ合衆国で聖書の教えを硬直的、新興宗教的に歪曲するキリスト教右派、キリスト教根本主義、
> キリスト教会とその教派に向けて使用される。非難、侮蔑の意味合いを持って使用される場合も多い。

https://twitter.com/takapon_jp/status/9068335656
> 原理主義者はやはりイスラム原理主義者も捕鯨反対原理主義者も
> 正義原理主義者の検察もみんな頑固だから、
> 色んな曲解をしながら原理主義の姿勢を崩さない。
> だからこその原理主義者なんだろうが。。。というわけでもう、寝る。

お前が言う交換可能性とかPOSIXでは一切言われていない
POSIXの教えとは無関係なのにPOSIX原理主義者
POSIXという言葉と成果を利用してるだけ
https://twitter.com/5chan_nel (5ch newer account)
2021/05/09(日) 18:41:45.38ID:SrZZvaGV
チラシの裏に書くのがおすすめだよ
2021/05/09(日) 18:46:46.40ID:POHrmQr6
だな
普段あんなの視界外なのからは何宣伝してんのとも思えなくもない
2021/05/09(日) 18:58:58.35ID:QngfRO5p
やぶ医者 語源 でぐぐったら一番最初にこれが出てきてワロタw
https://www.kanken.or.jp/kanken/kankantown/trivia/trivia2.html

治療や診断が下手な医者を「藪医者」と言うが、草木が生い茂った「藪」とは直接関係なく、
もともとは「野巫(やぶ)」と書いたとされている。
「野巫」とは、まじないを使ったあやしげな治療しかできない田舎の医者のこと。
2021/05/10(月) 02:23:04.02ID:PuMIN21M
POSIX原理主義ももう終わりかねぇ
ネタとしては面白かったよ
2021/05/10(月) 09:00:19.42ID:m/v6xXVY
例えば微細化技術で消費電力半分になるんだがそのまま消費電力
半分にするかそれともトランジスタ2倍積むかって言われたら
今だったら(dashが必須だったような)組み込み用チップでも
後者をとってWebなりWifiの機能つけてメモリも潤沢になってる
だろうしなあ
2021/05/10(月) 09:42:46.16ID:Qz+CRcrD
>>520
選ぶとするならコスト削減になるほうじゃね?
同じコストで性能二倍になるなら
コスト半分にして同じ値段で前と同じ性能のものを売る
2021/05/10(月) 10:46:13.22ID:jJW0aId3
>>521
んな単純な話やないやろ。
パフォーマンス指向なら性能が高ければ高いほど売りやすいし、原価比率が小さければ下げたところでたいした儲けにならんし、結局、モノにもよるし経営判断にもよる。

つーか、何の話や?w
2021/05/10(月) 14:41:26.23ID:/CC3l5IU
Debianとかパフォーマンスが理由?でdashに変わったけど
今後これが将来bashに変わることってあると思う?
俺はもう無いと思うんだよね
性能的にはbashで良くなったとしても
互換性を理由にPOSIXに縛られちゃった
2021/05/10(月) 16:49:20.96ID:/CC3l5IU
POSIXってそんなにいいもんかねぇ
2021/05/10(月) 18:43:12.00ID:hErX5Z2R
Ubuntuでのことがあったから
まあしょうがないってことだな、ああいうプロダクトでは
bashismもそれでわかったくらいな、いいとか言う話ではないな

その後のUbuntuでもPOSIX縛りではないからな
まあPOSIXでも書けるならPOSIX準拠にするだろうけど、ああいうプロダクトでは
2021/05/10(月) 19:19:20.01ID:jJW0aId3
Ubuntuで何があったんだっけ?
2021/05/10(月) 19:47:37.47ID:hErX5Z2R
しばらくbashだったがdashに変えた。bashのPOSIXモードで動くように書いてたのに動かないやんけっていう
bashism問題に当たった最初のそれなりのスクリプトの数があるプロダクトがUbuntuじゃないのかな
もしくはちゃんと文書化して残したプロダクトかもだが
2021/05/10(月) 19:56:07.55ID:wjJJgxye
必要ないからだろ
bash必要ならインストール
2021/05/10(月) 19:58:31.16ID:hErX5Z2R
GNU/Linuxだからログインシェル用には必ず入っていそうだが
2021/05/10(月) 20:11:08.73ID:hErX5Z2R
>>523,524 がそもそも何か勘違いしてるだけだな
(>>528も。普段はインタラクティブでdashなんて使ってるのか?)

bashの時でも「ああいう」スクリプトはPOSIX(/bin/sh)準拠で書いてたからな
別に誰も #!/bin/sh でしか書くなとは言ってないだろう。ただなんとなくかそうした方がいい程度だなw
(なんか絶対にとか言う変なのは居るけど)
必要ならbashでもzshでもなんでも好きに書けばよろしい、シバンを適切にしてればいいことだな
2021/05/10(月) 20:19:30.27ID:aEtJHiO8
/bin/shがdashへのリンクになってるだけ
UbuntuでもDebianでもデフォルトのログインシェルはbash
上でも言われてる通りbashなりの拡張機能を使いたいならシバンをちゃんと設定すればいい話でしょ
2021/05/10(月) 20:29:43.61ID:hErX5Z2R
なってるだけが起因なんだがな
というより、bashもなってるだけでもあったろうが、GNUは変なとこで拘るからなあ。素直にPOSIXモードならPOSIX準拠にしていればいいようなもんなのに
なんか他のPOSIXのことでもオレオレの主張は曲げない独自にやるんだというのはあったな

GNU/Linuxはログインシェルはどのディストリでもbashだろうな
変わったディストリはあるかもしれないが
FreeBSDはtcsh、OpenBSDはkshみたいだな。macOSはzshか。BSD系は色々(歴史的に)ありそうだな
2021/05/11(火) 00:12:44.56ID:1enRFFJU
>>531
/bin/shがdashのリンクになってるだけという話じゃなくて
dashのリンクになっていてそれ以外に変更することはないだろうってことよ

>>532
> 素直にPOSIXモードならPOSIX準拠にしていればいいようなもんなのに
bashの場合POSIXモードにしていても非POSIXの機能が使えちゃうからね
/bin/shをbashにしてもPOSIX制限ができない
シバンを/bin/shにちゃんと設定してるのにPOSIXオンリーのシェルじゃないってのが問題
2021/05/11(火) 07:58:52.53ID:FhvqefgH
トレースしてるだけ
2021/05/11(火) 12:39:30.70ID:PU80Jyjy
極論だが古典的なシステムでは /bin/sh は POSIX 準拠でさえないんだから
POSIX 準拠厨はシェバンに #!/bin/dash って書くべき
2021/05/11(火) 12:44:51.27ID:1enRFFJU
>>535
POSIX準拠厨はPOSIXに準拠するなっていってんの?
2021/05/11(火) 13:12:35.75ID:ZJle8Vfo
dash用スクリプトを書くのにbashのデバッグ機能は必須(というほど大したもんでもないが…)
2021/05/11(火) 13:27:42.49ID:rqNaE/tz
>>535
今時の /bin/sh の最低限度がPOSIXなんだよ
POSIX以前の /bin/sh が現役(古いどころではないOSを無理に今でも使ってるではなく、現代的なOSでという意味での)なのはどこにあるの?
2021/05/11(火) 14:27:39.20ID:nf224V10
dashならPOSIX準拠、と信じてしまうのも、経緯的によろしくなさそうやけどなあ。

もうbashでもdashでも、#!に明記したほうがマシやろ。
あとから検索もしやすいし。
2021/05/11(火) 17:39:06.11ID:kzU/MSxe
ただの難癖
そして明記しない意味も無視かよ
541デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:28:01.49ID:w4TAZAbA
>>539
スクリプトはPOSIXに準拠しており
POSIXシェルで動かすことを想定しているのだから
#!/bin/sh でいいだろ

実際に動かすシェルのことは知らん。そんなもん使う環境次第だろ。
スクリプトをmacOSにインストールするか、Debianにインストールするか、
その他のUNIXにインストールするか、そんなこと開発者が知ることなんてできない。
スクリプトがPOSIXシェルと言うだけの話。
2021/05/12(水) 00:34:31.14ID:1N3VwigT
>>538
bash じゃなくて dash を使わざるを得ないような極小環境で現役なものはどこにあるの?
正直 bash 拡張使って簡潔に書いたほうがRAMもROM/Storageも少ないんじゃないかと
さえ勘繰ってるわ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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