- 1 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 12:07:26.41 .net]
- シェルスクリプトの総合スレです。
□お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その25 echo.2ch.net/test/read.cgi/unix/1439563321/
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/26(水) 01:01:14.37 .net]
- くだらない話題で申し訳ないんすけど
シェルスクリプトで使う変数の規則とかってどう決めてます? 自分は_HOGEがいいかなって思ってるんですけど、マジョリティはどうかなと(ここがマジョリティかどうかは別だけど)
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/26(水) 01:38:09.14 .net]
- >>151
変数はhoge、環境変数はHOGE
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/26(水) 08:25:15.17 .net]
- >>151
とくに名前に規則は設けず、関数内で local 宣言でできるだけ隔離。 気にはなるけど、個人的には実際に問題になったことが無いし、export しなければ大丈夫じゃないか?
- 156 名前:名無しさん@お腹いっぱい。 [2017/04/26(水) 08:45:28.91 .net]
- >>153
シェル内に影響するよ スクリプトならシェルスクリプト内までその変数が生きる
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/26(水) 08:52:37.57 .net]
- localって業務用なら使うべきなんだろうがいまいち慣れないんだよなぁ
スコープ分けは基本ってのは分かっちゃいるんだがシェルスクリプトはどうもlocal使ったら負けな気がする すげぇどうでもいいんだけどな
- 158 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/27(木) 01:52:59.43 .net]
- >>151
俺は>>152と同じ ↓を一度読んどくと良いと思う https://www.gnu.org/software/autoconf/manual/autoconf.html#Special-Shell-Variables
- 159 名前:名無しさん@お腹いっぱい。 [2017/04/27(木) 08:52:30.15 .net]
- おまえらただのニートじゃなさそうだな
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/27(木) 08:55:21.07 .net]
- お前は何を言ってるんだ
- 161 名前:名無しさん@お腹いっぱい。 [2017/04/27(木) 08:59:38.21 .net]
- >>158
ジョークだろなんでそんなにおこる?
- 162 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/04/27(木) 09:01:08.43 .net]
- >>159
俺にしたって某画像のネタをそのまま貼っつけただけで別に怒っちゃいないぞ
- 163 名前:名無しさん@お腹いっぱい。 [2017/04/27(木) 09:25:43.77 .net]
- >>160
こりゃ一本取られたな
- 164 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 16:52:42.42 .net]
- echo "${hoge[@]}" | xargs -P 10 -n 1 -J{} echo {} >> test.txt
てやると、期待するファイル内容は aaa bbb ccc ... なのに aaa bbccc ... となってしまいます。 これを回避するいい方法ないですか?
- 165 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 18:13:00.72 .net]
- hogeの中身はどうなってんの?
- 166 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 19:56:59.36 .net]
- Debian GNU/Linuxでのbashなのですが、指定時間指定ユーザのログインが無ければ
シャットダウンするシェルスクリプト https://pastebin.com/pJ3v4TYY を勉強を兼ねて作ってみました。 正常に動作していますが、何か変なところありますか?
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 21:11:07.00 .net]
- cronでやってそうだけど
ログインしてたらループ抜けないようになってるから 1日経つと重複起動すると思う あと指定時刻なのか一定時間なのかはっきりした方がいい 動いてると思ってるならいいんでないの
- 168 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 21:31:34.54 .net]
- >>165
一定時間です。 /etc/rc.localってcronで1日ごとに起動されるのでしょうか。 PC電源投入後Linux起動時にただ一度だけ実行されると思っているのですが
- 169 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 22:28:29.89 .net]
- シェルの前に日本語を学んだ方がいい
- 170 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 23:44:25.36 .net]
- >>164
常駐しないでlastとかでログインしなくなってから何分経ったか毎回計算した方がシンプルじゃない なんだっけvarの下になんかあったよね
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/06(土) 23:53:03.17 .net]
- >>168
それだと、PC起動直後(lastとかで経過時間計算直後)にシャットダウンが走る可能性があるような
- 172 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 01:18:18.46 .net]
- >>169
仕様通りだな
- 173 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 03:40:10.15 .net]
- >>164
ダメってわけじゃないけど、"$1"と
- 174 名前:芒rするなら grep は要らないはず(12行目)
>>166 一度だけ起動であってる 重複起動とか言ってる人は無知か勘違いなので無視していい >>168 varの下のなんかってwtmpのこと? wtmpは確実に更新されるわけじゃないし時間の計算も面倒になるので >>164の方がシンプルだろうね [] - [ここ壊れてます]
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 04:01:11.02 .net]
- >>170
確かに仕様通りだね PC起動してlogin受け付ける前にpoweroffしてしまうようになるだろうけど
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 08:46:28.77 .net]
- 一定時刻ログインしてないんだから当たり前
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 10:22:50.37 .net]
- 15分でシャットダウンって考えられない
まあ習作だからいいんだろうが
- 178 名前:名無しさん@お腹いっぱい。 [2017/05/07(日) 16:02:10.86 .net]
- >>174
チャージマン研!第23話「恐怖!精神病院」 https://youtu.be/ckO9d_-qiPw
- 179 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/07(日) 21:37:10.56 .net]
- >>174
そこは運用で調整してけばいい話だろう
- 180 名前:161 mailto:sage [2017/05/07(日) 22:15:23.57 .net]
- みなさんありがとう。
>>171 > "$1"と比較するなら grep は要らないはず(12行目) 他ユーザがログインしていても無視してシャットダウンする仕様にしたいのです。 > 一度だけ起動であってる 了解 >>174 > 15分でシャットダウンって考えられない トイレとかの時、5分ほどかかる自分環境自動バックアップの処理を走らせ 画面ロックして席を立ちます。 席に戻ったらまた作業に戻るのですが、とっさの用事で席に戻れない時は 電源が切れていて欲しいのです。 10分だと下痢の時短いかも。20分もいらない。だから15分。 画面ロック(ログイン状態)の時に電源切断するのは気持ち悪いので ログオフ状態の時に切れるようにしたいのです。 (そのため、バックアップ処理完了後は自動でログオフされるようにしています) ちなみにWindowsではそういう自作ServiceをCで書いて走らせています。 Linuxは簡単ですね。
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 01:49:41.10 .net]
- タイムカードの無い現場で ふらっと早退してやろうって感じなのかね
- 182 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 05:13:08.30 .net]
- そんなんならサスペンドでいいじゃん
久しくシャットダウンしてないや
- 183 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 07:30:05.34 .net]
- Windows簡単だと思うけどな
Cならコンパイルとかの環境が必要だけど所詮慣れだし Cなんか使わずにVBScript使えばいいんじゃないの
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 09:48:57.03 .net]
- Windowsは簡単だな諦めるしかすることないから
- 185 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 19:53:34.22 .net]
- >>180
Windowsだと、Cでservice作る以外に>>164を実現する方法ってあるのかな
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 21:53:34.64 .net]
- Windowsできるアピールはいらん
ほかでやれ
- 187 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/09(火) 20:02:44.75 .net]
- そう、マッキントッシュならね
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 06:37:29.43 .net]
- 時間のかかるパイプライン処理中に現在の中間処理内容を
メッセージ表示させることはできませんか? echo で標準出力に表示させようとしてもそれは次のパイプラインに渡って画面に表示されませんよね? 標準エラー出力で表示させるしかないでしょうか?
- 189 名前:名無しさん@お腹いっぱい。 [2017/05/15(月) 07:04:43.49 .net]
- tee
- 190 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 11:20:57.06 .net]
- このスレの無駄のなさすぎる回答好き
- 191 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 21:05:16.62 .net]
- そう、マッキントッシュならね
- 192 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 23:50:07.04 .net]
- でもteeの仕様って、一方をファイルじゃなく、stderrあたりに
しておいてくれれば、もっと汎用性上がったのにね
- 193 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 00:37:43.04 .net]
- UNIXでは標準エラーもファイルだから問題ない
- 194 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 06:24:05.92 .net]
- teeの出力先をstderrにすると、中間処理をモニタすることしかできなくなるのでは?
ファイルに書けばモニタも出来るし汎用的
- 195 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 07:42:47.01 .net]
- >189
デフォルトでstderrに吐くと、teeのエラーを吐く場所がなくなるからでは? (例えば ls | tee --wrongoption とかの場合) モニタしたければ tee /dev/stderr でよい。
- 196 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 08:32:03.95 .net]
- >>192
dev使うのはOS依存じゃね?
- 197 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 10:02:35.57 .net]
- >>191
stderrもリダイレクトできるよ
- 198 名前:名無しさん@お腹いっぱい。 [2017/05/19(金) 20:34:10.11 .net]
- シェルってオブジェクト指向で書けないの?
暗黙的ルール多すぎだろ
- 199 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/19(金) 22:16:49.58 .net]
- >>195
>> 暗黙的ルール多すぎだろ 例えば?
- 200 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/19(金) 23:31:44.94 .net]
- >>195
OOPの本質を理解してれば出来る もし出来ないなら個人の能力に問題がある
- 201 名前:名無しさん@お腹いっぱい。 [2017/05/20(土) 03:14:17.14 .net]
- シェルはパイプで渡していくと
関数型っぽいけど
- 202 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 09:42:17.19 .net]
- 関数型と見るかメソッドチェーンと見るかの違いだな。
- 203 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 21:59:01.54 .net]
- >>195
https://invent.life/project/bash-infinity-framework
- 204 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 22:19:56.29 .net]
- >>195
オブジェクト指向で書くと暗黙のルールがなくなるの?
- 205 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 05:34:32.67 .net]
- >>195
別にシェルが嫌なら同じ処理をプログラミング言語で作れば良いじゃ無い。 LLならそんな手間じゃ無いし。
- 206 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 18:05:12.85 .net]
- >>195 はシェルの開発言語のことを聞いてるんだよね?
確かに、たいていのシェルはCで書かれてるし
- 207 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 19:34:04.56 .net]
- だんだん分けわからなくなってきたわ
- 208 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 14:55:53.34 .net]
- $ls>hoge.txt
だとカレントディレクトリのリストができますけど、 さらに深堀りして、そこにあるフォルダ(ディレクトリの中身)も表示させるには どうすればいいのでしょうか? それから、 フォルダかファイルの名前 ディレクトリ名(/Users/namae/nanntyaca/hogehoge.txt) のようなふうに二つを並べて吐き出させたいのですがどうすればいいでしょうか?
- 209 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:04:02.31 .net]
- >>205
find . -type f > hoge.txt
- 210 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:30:08.76 .net]
- >>206
ありがとうディレクトリのリストができました。 ディレクトリのリストから、htmlのリストを作ろうとすると、どうするのが いいのでしょうか?クリックすると当該ディレクトリに飛ぶようにしたい だけなのです。考えていたのはtexのファイルにするということなのですが。
- 211 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:38:50.01 .net]
- ハイパーリンク作るまでやるならshの範疇じゃない気がするが
なんでも聞かずに少しはぐぐったらどうよ
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 16:05:32.00 .net]
- ありがとうございます
ぐぐります
- 213 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/25(木) 08:52:58.76 .net]
- w3m . -dump_source >dir.html
- 214 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 02:49:12.98 .net]
- >>210
テキストファイルをhtmlにするには拡張子を変えただけでいいらしいです。 >>210さんが教えてくれてのはhtmlをtxtファイルにするための ものだと思います。markdownでリストを作ろうと思います ありがとうございました
- 215 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 03:27:01.73 .net]
- 横から
Content-type: text/html htmlはtextの中でどう書くかというルールに過ぎない 拡張子なんてのはexplorer.exeとかのソフトがどのアプリケーションソフトを起動するかのヒント程度 名前などどうでもいい w3m . -dump_sourceは、.(このディレクトリ)をhtmlで書き出せ、と命令してる
- 216 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 07:39:50.94 .net]
- >>210さん
やりたかったことがそのままできるコードを教えてくれてありがとうございます。 それなのに申し訳ありません。>>212さんが教えてくれるまでその意義をわからず、 失礼なことを書きました。 >>212さん 本当にありがとうございます。
- 217 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 10:47:53.61 .net]
- シェルスクリプトの本で、こんな便利なことができるという感じの
スクリプトを紹介するような感じでできてる本というのでお薦めの本は あるでしょうか?
- 218 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 11:25:57.91 .net]
- >>214
クックブック ……ああでもあれはbashだったか
- 219 名前:sage [2017/06/02(金) 20:17:29.65 .net]
- (head ; tail ) < file
で、先頭10行・末尾10行が出るのはどういう仕組み? FreeBSD+ash、bash で確認。 man にはそれらしい記述がないように見える。
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 21:17:20.29 .net]
- ちなみに GNU coreutils の head, tail だと
seq 10 | { head -1; tail -1; } 1 となる。以下の場合は seq 10240 | { head -1; tail -1; } 1 10240 となる。これは head コマンドが一定量のデータをバッファリングした まま処理を終了してまうから。BSD系のコマンドでは未使用なデータは パイプバッファに戻してくれるので tail コマンドで読み出すことができる。
- 221 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/03(土) 15:49:14.51 .net]
- ともにデフォルトが10行だからじゃないの?
- 222 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/04(日) 01:26:27.62 .net]
- >>215
クックブック注文しました ありがとう
- 223 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/05(月) 08:12:28.10 .net]
- どうやって実現してるの?パイプではseekできないと
ずっと思ってた
- 224 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/05(月) 10:37:40.02 .net]
- tailのソース読んでみたら?
- 225 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/06(火) 12:55:43.92 .net]
- >>217
BSDは知らないけど、普通stdioで読む単位は4096byteとかだから headがそれを読んでexitした場合残りをtailが読むことになる 入力データが4096byte以下ならheadしか受け取れないが、大きければ headとtailがそれぞれ入力を受け取れる パイプに戻すとかいうインタフェースはunixにはない
- 226 名前:213 mailto:sage [2017/06/13(火) 13:42:47.20 .net]
- どうもです。
要は head と tail でディスクリプタを共有してて、未 read の部分を tail が読んでいるんだと思うんだけど、 親子じゃないプロセスでディスクリプタ共有なんてできるんでしたっけ、と思って驚いた (できてるから、できるんだろうけど)。 ちなみに tcsh でもできた。 ただ、下記の ★1 と ★2 で結果が違うのはどうしてなんでしょう。 コマンドかファイルかで、stdio のバッファリングの違いってあったっけ。 $ seq 100 > seq100.txt $ seq 10024 > seq10024.txt $ cat seq100.txt | { head -1 ; tail -1 ; } # ★1 1 $ { head -1 ; tail -1 ; } < seq100.txt # ★2 1 100 $ cat seq10024.txt | { head -1 ; tail -1 ; } 1 10024 $ { head -1 ; tail -1 ; } < seq10024.txt 1 10024
- 227 名前:213 mailto:sage [2017/06/13(火) 13:51:01.95 .net]
- >>217
> ちなみに GNU coreutils の head, tail だと > seq 10 | { head -1; tail -1; } > 1 > となる。 なお、FreeBSD でも $ jot 10 | { head -1; tail -1; } 1 でした。 head・tail で共有しているのはディスクリプタだけであって、 stdio バッファの共有はしていないので、戻すってのが ungetc(3) 的な ものを指しているのであれば、戻したとしても tail がそれを読めるわけでは ないと思っています。
- 228 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:00:33.86 .net]
- >>223
seq 100は4096バイト以下だから。 seq 1042でtail -2 したら切れ目がわかるかと。
- 229 名前:213 mailto:sage [2017/06/13(火) 15:13:53.06 .net]
- ★1も★2 も seq 100 なのに、なぜ結果が違うのか、というのが疑問なのであります。
- 230 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:15:44.72 .net]
- ファイルディスクリプタがプレーンファイルならlseekするから
- 231 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:19:58.75 .net]
- ごめん、mmapだった
- 232 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/14(水) 09:15:41.39 .net]
- >>226
要するに>>227の通りなんだけど ⭐1の書き方の場合、標準入力がパイプになるので(lseekできないので)tailには何も渡らない ⭐2の場合標準入力は通常ファイルseq100.txtなのでtailはlseekして読み直すから読める
- 233 名前:213 mailto:sage [2017/06/14(水) 10:53:46.67 .net]
- ありがとうございます。
https://svnweb.freebsd.org/base/head/usr.bin/tail/tail.c?revision=314436&view=markup#l227 で lseek で先頭に戻るってのが成功するか否か、ってことですね。
- 234 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/14(水) 11:09:43.34 .net]
- head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
- 235 名前:名無しさん@お腹いっぱい。 [2017/07/01(土) 20:45:46.61 .net]
- 流石に上手いわ
- 236 名前:名無しさん@お腹いっぱい。 [2017/07/01(土) 23:39:20.14 .net]
- >>231
惚れる。UNIX の基本コマンドだけじゃん
- 237 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/05(水) 17:14:04.26 .net]
- >>231
やるやん(´・ω・`)
- 238 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/08(土) 09:49:05.30 .net]
- >>223
子同士だから親から引き継いだ同じものを共有してる
- 239 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/15(土) 18:10:48.03 .net]
- Eclipse上でシェルスクリプトを動かしたいんだけど、どのサイトを参考にすればいいですか?
- 240 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/15(土) 18:28:08.93 .net]
- site:2ch.net 付けてググれ
- 241 名前:名無しさん@お腹いっぱい。 mailto:age [2017/07/31(月) 07:52:04.50.net]
- # 使用しているのは GNU/Linux なので微妙にスレチかもしれないです。
GNU/Linux では /bin/sh が /bin/bash へのシンボリックリンクになっています。 私が利用している Fedora 26, Linux Kernel 4.11.11 では bash$ readlink -e `which sh` /usr/bin/bash でした。(Fedora では /bin 全体が /usr/bin へのシンボリックリンクです。そういう方針です) ファイルシステム等と共にシェルスクリプトの高速化を図ろうと, Bourne Shell 互換で GNU bash より低機能で処理が高速な GNU dash を /bin/sh へのシンボリックリンクにしました。 bash# rpm -qa | grep -E "^dash" dash-0.5.9-2.fc26.x86_64 bash# unlink `which sh` && ln -s /usr/bin/dash /usr/bin/sh 再起動すると Xorg およびディスプレイマネージャは正常に起動したのですが, ログイン後デスクトップ環境(Xfce4)が起動しません。 エラーログを取得しようにもコンソールl(/dev/tty1とか)にさえログインできず, 結局外部から /bin/sh を /usr/bin/bash に割り当て直して無事ログインできました。 原因はデスクトップ環境を構築しているシェルスクリプトのどこかに bash 独自の機能を要する文法があると思われます。 そこで質問なのですが,実際にログインプロセスを踏まずにそれを再現できるシェルスクリプトの作り方を教えてください。 長くて申し訳ないです。よろしくおねがいします。
- 242 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 07:59:41.19.net]
- 内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧に 表示されたままになって元に戻せません! 前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。 再起動しても表示されたままなんです。 早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・) 至急助けてください!!! OSはウィンドウズXPです。 よろしくお願いします。
- 243 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:49:19.54.net]
- >>239
金属バットでPCフルスイングすれば?
- 244 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:51:37.14.net]
- ここに到達する知識があるならgoogleで検索すれば見つかるだろうに
- 245 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:57:00.00.net]
- >>238
再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは? tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに su - 一般ユーザ名 でテストするのが一番手っ取り早そう。 display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに display-manager を起動してログインテストすればいいんじゃないでしょうか。
- 246 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:07:15.67.net]
- >>239
これは履歴とかキャッシュ消せないだろうからどうせバレる
- 247 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:25.45.net]
- >>238
Linux板へ
- 248 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:52.08.net]
- >>239
懐かしコピペだな
- 249 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:49:07.69.net]
- >>242
ありがとうございます。やってみます。 ご迷惑かもしれませんが,解決を見たら報告します。
- 250 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:54:40.49.net]
- >>240
ありがとうございます。やってみます。 ご迷惑かもしれませんが,解決を見たら報告します。
- 251 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 15:19:17.23.net]
- >>238
checkbashismsが使えるならそれでBashの機能の有無を確認出来る ttp://wiki.archlinuxjp.org/index.php/Dash
- 252 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 16:15:55.29.net]
- /bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから
そもそもそんなことやっちゃいけない
- 253 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 02:25:49.77 .net]
- >>248
ありがとうございます。 5000 箇所くらい不適合が見つかりました。 パッケージ管理されているシェルスクリプトも多くあり, 全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。 >>249 その通りなんですが dash は bash の4倍早いと聞いたのでつい……。
|

|