【tc厨が】bash3.0登場!!【嫉妬する】
■ このスレッドは過去ログ倉庫に格納されています
ついに出たぞ、おマイら。俺はついさっきコンパイルしたばかりだ。
まだしっかりドキュメントを読んでないのでその破壊力は未知数
だが
$ echo {1 .. 5}
1 2 3 4 5
つうのは気に入ったぞ。
% print {000..99}
000 001 002 003 004 (ry
098 099
ププ
>>45
% echo 0{00..99}
seq -w と同じ仕様だな。
% print {00..10}
しかし補間候補表示時に日本語ファイル名が化けるのが難点(zsh) レビューするも何も、bash2.0のころと何も変わらずに使えているから困らないし、
どこが変わったんだか気が付かないくらい表面的には変わってないし。
>>51
サンクシ
そんな風に言われたら 変える必要はないとしか考えられないな・・ UTF-8もeucもばっちりなシェルってありますか?
あるコマンドの実行時だけ、特定の環境変数を指定して
実行する便利な方法ってありませんか?
LANG=en_US
hogehoge
LANG=ja_JP.UTF-8
とかするの面倒臭くって。 % LANG=C hogehoge
でいいんじゃないの?
これで面倒なら alias で設定すればいいし。 >>58 そんな書き方ができたのか…
いままで知らなかったよ。 env LANG=C hogehoge
なら bash じゃなくてもオケ。 alias c=LANG=C
alias j=LANG=ja_JP.eucJP
とかしておくと
英語の man 見たいときとかに
$ c man ls
ですむんで便利。 すげえenvじゃなくても現在の値が上書きされねえ!!! bash って、シェルスクリプトの途中のコマンドのリザルトが 0 以外だと
そこで止まりますよね?リザルトを無視してスクリプトを続行させるにはどうすればいいのでしょうか? そんなあほな。
set -e していない限り止まることはないぞ。 これだけ使われるソフトウェアがメジャーバージョンアップしたのに
これだけスレが閑散としてるのも珍しい >>64
bashに限った話ではないが、-e なスクリプトで一部のコマンドだけ
エラーを無視するには、そのコマンドの末尾に「|| true」をつけ足せばOK 嘘を嘘と見抜けない人には(インターネットを利用するのは)難しい || true 最近、UTF-8にlocaleを変えたんだけど
zshで日本語のファイル名を補完すると落ちたりするのが気にくわなくて、
bashに乗り換えようかなと思う今日このごろ。
みなさんいかがお過ごしですか? だから3で増えた便利機能をもっと書けっていってんだよ
だから3で増えた便利機能をもっと書けっていってんだよ
だから3で増えた便利機能をもっと書けっていってんだよ
だから3で増えた便利機能をもっと書けっていってんだよ
だから3で増えた便利機能をもっと書けっていってんだよ
だから3で増えた便利機能をもっと書けっていってんだよ
頼むからもっと書いてくれよ
お願いでよ それだけ逝っても出てこないってことは、対して差が無いってことじゃないw bash3.0はファイル名補完でUTF-8環境の日本語は化けますか?
化けないならzshから乗り換える。マジで >>81
OSによっては違うかもしれないが
ls の表示が化けなければファイル名補完も
大丈夫だと思う。 GNUはUnicode原理主義みたいなツールが多いから大丈夫じゃないか、多分。 Mac OS X では化けてない。 10.3 を使ってるけど。 bash-3.1とreadline-5.1がリリースされました。 キタ━━━━━━(゚∀゚)━━━━━━ !!!!! Solarisで3.0を使っています。
ログインシェルにbashを指定しますが ^C で intr が効きません。
でも % exec bash や、単に % bash として起動すると、
そのbashでは ^C で intr が効きます。
% stty intr ^C でもダメです。
/etc/bash.bashrc などはありません。
単に設定の問題なのかも知れませんが、何か心当たりのある人いませんか?
なお、端末はteratermです。
>>87
まずは readline の設定の確認かな。
~/.inputrc はある?
man bash の readline とか bind の説明を読んでみるといいよ。 >89ありがとう
明日(23日)出勤になったので出先で試してみます。
せっかく オライリー・ジャパン から3.0対応の本が出たわけだから、ここで書い
てもバチ当たらんよな。
書名:入門 bash 第3版
ISBN:4-87311-254-0
定価:2,940円
URL:http://www.oreilly.co.jp/books/4873112540/
>>63
>>78
上記URLには
> 第3版の本書では、多くのLinuxディストリビューションで標準の2.05bに対応
> したまま、最新バージョンの3.0で利用できる新機能ついても解説します。
> bash-2.0以降に追加されたオプションを網羅する待望の改訂版。
と書かれているから、入手して読むといいんでねーの。
bash-3.1.001, readline-5.1.001 公開age $ cat <<< hoge
hoge
って3.0から? "\ek":copy-backward-word
Control-k: "\ek\C-y"
cp hoge C-k
で
cp hoge hoge
になるので、バックアップを作るときやファイル名を変えるときに便利。 ファイル名をちょこっと変えるのに、ほとんど同じ
ファイル名を2回入力するのは面倒じゃん。 人によってやることは全然違うから
自分が便利だと思っても、他人が便利だと思うのは大間違い ちょっとしたtipsを顔真っ赤にして否定するのはどうかと思うな 自分の便利は他人の邪魔って言うのは昔から良く言われていること
>>104
便利だと思ってる本人はそれがわからないから問題 それはいいけど、そんなにムキになって
tips公開を阻止するのはなぜですか? 必要か不必要かは見ている人が勝手に判断すればいいと思うんです
必要と思う人はありがたく使わしてもらえばいいし、不要もしくは改良を
要する人は使わない、もしくは改良後をフィードバックすればいいし
みんなで幸せになろう 改良。
Control-k: "\C-w\C-y \C-y"
というか、前のやつピリオドを含むファイル名でテストしてなかった(笑) じゃあ自分のサイトでやればいいんじゃないのか?
例えばここに無駄な書き込みをする事によって、次に見る人がいれば転送量が増える。
その転送量が増える事によって、また無駄な商用サービスが始まってくんでしょ
この書き込みが無だって言うって言うのも無駄ね。
この書き込みで以下のこの書き込み以上の書き込みを抑制できるのなら
無駄にはならない >>109はどうもウェブ上で目にするもの全てが自分のためにならないと
気が済まない人らしいぞ。 >自分が便利だと思っても、他人が便利だと思うのは大間違い
体験談からこれは自分も同感。 使いなれてみないとわからない便利さみたいなのもあるよ。
C-t なんて初めは使いにくくて意味不明だったが、
しばらく意識して使ってたらなくてはならない操作になった。
だから自分にとって C-t は便利なコマンドなのだが、
C-t イラネという人の気持ちもわかるし、
イラネという人の何割かは使い慣れれば
好きになるんじゃないかとも思う。 > イラネという人の何割かは使い慣れれば
> 好きになるんじゃないかとも思う。
これがおせっかいなんじゃないかと思う
もちろんおせっかいだろうよ。
俺自身もあえて勧めたりはしない。 bash-3.2とreadline-5.2がリリースされました。 bash-3.2、ビルド時にエラーになるね。
(ru.poを適当にいじればOK) bash使いなんですが、bash 3のバグを発見しました(bash 2では問題なし)。
「プロンプトに色を使うと補間リスト(タブを何回か押したときに表示される)表示時にコマンドラインにゴミが入る」というものです。
【再現】
Cygwinのデフォルトのプロファイル(カスタマイズしている人は「bash --init-file /etc/profile」にてデフォで起動します)
は「PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '」というプロンプトを使っています。
これは複数行なのですが、\nを抜いて1行にするとバグを再現できます。
「PS1='\[\e]0;\w\a\]\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '」
このプロンプトでgccと打ってタブを何回か押してみてください。
補間リストが表示されるとともに、コマンドラインに「gcccc」とゴミが2文字ほど入るはずです。
私が実際に使ってるプロンプトでは5文字ほどゴミが入ります。
bash 2ではなにも問題なかったのに、bash 3になったら突然これです。ほんとウザイです。
これはバグですよね?
GNUに報告した方がいいですか? >>121
bash3だけど俺の環境では再現しなかったよ。Cygwin特有の問題じゃない? >>122
まじですか〜、試していただいてありがとうございます。
おっしゃる通り私がバグを確認したのはCygwinにおいてのことでして、
あした学校にいったらLinuxがあるので、そこでは正常にふるまうかどうかを確認してきます。
この場合、メジャーバージョンの2とか3とかよりも下位のレベル(パッチレベル?)での違いかもしれませんね 学校のLinuxはbash 2でしたOrz
もちろん正常にふるまいます^^;
どうしたもんか・・・ >>125
bash3をhomeでコンパイルすればいいのでは? cmd()というシェル関数があるときに、これを呼ばず
$PATHからcmdを検索させる方法はありますか? >>128 では駄目で、>>129 でできました。ありがとうございます。
ついでに、ビルトインの command でも十分でした。 >>122
「uname -a」と「bash --version」を教えていただけますでしょうか?
>>126
なるほど。homeでのコンパイルは管理者権限いらないんですか? >>131
コンパイル用のコマンドのパーミッション次第だが、
たいていはインストール先をユーザ権限で置ける場所に
変更すればいけるはず。
./configure --prefix="$HOME/bin"
make
make install
とか。 いや、bashの場合は、bashコマンド1個のバイナリ単独で動くから、
自分の$HOMEあたりにソース展開して、普通に
./configure; make
したあと、bashファイルだけ、$HOME/bin あたりに手動コピーして使えばいい。
別に --prefixの指定は要らない。 >>133
メッセージカタログ使う場合は置き場所に困るよそれじゃ。 >>134
メッセージカタログなんて使わないってww つーか、bashの場合、メッセージカタログ自体ねーよ。
>>133 で、「1個のバイナリ単独で動く」って言ってるだろ。 メッセージカタログが存在するのは糞tcsh。
bashには存在しない。 >>131(>>121)
> なるほど。homeでのコンパイルは管理者権限いらないんですか?
>>125に「学校のLinuxは…」という発言があったので、Linux上でコンパイルする
ときの話ですよね。多くの学生が使う演習室環境とか、そういうのかな?
そのLinuxシステムでは、>>131だけでなく、多くのユーザがいるかと思います。
# たとえ>>131専用のマシンで動くLinuxシステムであっても、"root"と呼ばれる
# 管理者用ユーザアカウントが存在するはずです。
で、その(一般)ユーザ自身のためのディレクトリってものがあるはずです、それが
ホームディレクトリ。そのディレクトリの中は、そのユーザ自身が好きに使える
(ファイルの作成/編集/削除が自由に行える)。
ビルド時は、
・configureスクリプト実行時にMakefileが生成される
・コンパイル時にオブジェクトファイル(.oファイル)が生成される
・実行ファイルbashが生成される
といった変化があるわけですが、これら生成されるファイルがホームディレクトリ
の中のどこかであれば、
root権限なくてもビルド(コンパイル)できます
>>132が言っていることはそういうこと。ただし、>>132の、--prefixの指定は
間違っているな。それだと、実行ファイルbashは $HOME/bin/bin/ にインストール
されることになるから。
% ./configure --prefix="${HOME}/bash"
% make
% make install
こう実行すれば、${HOME}/bash/以下に、実行ファイルやマニュアルなどが入る。 >メッセージカタログ
tcshに存在する「メッセージカタログ」は独自のものだけど、それと同等のものが
bashにも存在したりしないか?ロシアの環境ではメッセージがロシア語になるとか、
そういうの。
bashでは、gettextを利用してこの機能を実現してると思うんだけど。 >>139
bashの場合、libcにある汎用エラーメッセジについては *.moを読みに行くが、
bash自体の bash.moは存在しないね。
だから、bash単独で動作させて桶。
LC_MESSAGES=ja_JP.eucJPとかなら、libc側のメッセージカタログはOS側にあるので、
「そのようなファイルやディレクトリはありません」みたいなメッセージは出るよ。
それに、仮にbash自身の bash.moが存在したとしても、
それを $HOME/locale/ja/LC_MESSAGES/bash.mo みたいな埋め込みPATHで
読みに来られたら、それはそれでいやだぞ。
bashの場合は必要ないが、bash以外のソフトの場合、
可能ならば ./configure --disable-nls して、メッセージカタログを
外してしまうのが吉。 >>138
どうも詳しい説明をありがとうございました。
実際にやってみましたので報告します。
まず、Linuxについてです。
最新のbash 3.2のソースを取ってきて、パッチも5まであてて
3.2.5の構成に成功しました。
ここで>>121のバグが再現されるかをテストしてみたら、再現されませんでした(正常にふるまう)。
次に、Cygwinについてです。
同様のソースとパッチで3.2.5を構成しようと試みましたが、なにやらエラーが起きました。
lib/glob/glob.cの484行目のREAL_DIR_ENTRY (dp)が原因のようで、これが構造体に置き換わっているのですが、
その置き換わったものが指しているメンバが存在しないようです。この部分を1または0にすると構成に成功しました。
しかし、どちらの場合もバグは再現されてしまいました。
以上のことを踏まえまして、
1.glob.cが今回のバグに関係のあるファイルの場合
このファイルが原因
2.glob.cが今回のバグに関係のないファイルの場合
Cygwinが原因
という結論を得ました。
どなたか、glob.cが何を司ってるファイルかわかる方はいらっしゃいますでしょうか?
また、Linuxでは問題ないのに、Cygwinでは問題が発生するというメカニズムの何らかの可能性をご存知の方はいらっしゃいますでしょうか? >>141
OpenBSD4.0(-stable)上のBash(3.1.17)では再現せず。
ソース見てないけど、ファイル名的にはグロビング関係なのかな。
そこまでやる気力があるなら自分でfixしちゃえばいいのに・・・。 ■ このスレッドは過去ログ倉庫に格納されています