1 名前:名無しさん@お腹いっぱい。 [2012/05/24(木) 16:34:43.03 .net] zshについて語るスレ www.zsh.org/ zsh.sourceforge.net/ ・過去ログ zsh その6 toro.2ch.net/test/read.cgi/unix/1229010860/ zsh その5 pc11.2ch.net/test/read.cgi/unix/1212677877/ zsh その4 pc11.2ch.net/test/read.cgi/unix/1107342206/ zsh その3 pc5.2ch.net/test/read.cgi/unix/1080002786/ zsh入門 パート2 pc3.2ch.net/test/read.cgi/unix/1036324177/ zsh入門 pc.2ch.net/test/read.cgi/unix/990283346/
45 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/25(水) 23:12:32.02 .net] まあ、linuxのカーネルが3.0になったからってなんてことはなかったのと一緒か。
46 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 00:02:42.74 .net] 4.3 って開発版だったっけ?そうだった気もするな
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 00:09:42.18 .net] >>46 少なくとも4系は4.xのxが偶数がリリース版だった、はず
48 名前:名無しさん@お腹いっぱい。 [2012/07/28(土) 03:21:52.56 .net] 5のリリースメールから引用 > Version 5.0.0 of zsh is the new stable release. There are many changes > since the last stable release series, 4.2, イカリャク
49 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 12:32:34.28 .net] Debianでは4.3系を長らく使ってるから開発版って認識は薄かったなぁ (zsh-betaってのもあるのにzshの方が4.3.10)
50 名前:名無しさん@お腹いっぱい。 [2012/07/28(土) 12:52:30.74 .net] macportsも、よくわかってないヒトがメンテしてるのかな。 zsh @4.2.7 (shells) zsh-devel @5.0.0 (shells)
51 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 13:55:20.23 .net] パッケージのdevelとかbetaってのはソフトウェア自体の安定版/開発版だのとはまた別の基準でつけられるものでしょ 安定性重視のシステムで安定パッケージと認められるためにはそれなりのテストや議論を経てこれなら大丈夫って認められる必要があるんじゃね、しらんけど
52 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 14:24:13.58 .net] hoge-develって、実行時には必要ないincludeファイルとかだけをまとめたパッケージだろ。 本体パッケージとバージョンは同じじゃないといけない、しらんけど
53 名前:名無しさん@お腹いっぱい。 [2012/07/28(土) 14:32:40.96 .net] >>52 それredhatのRPM
54 名前:名無しさん@お腹いっぱい。 [2012/07/28(土) 14:39:12.82 .net] 5が出る直前は zsh @4.2.7 (shells) zsh-devel @4.3.17 (shellls) だったね。
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 19:56:17.51 .net] devel ってか head 的な?
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/28(土) 20:01:47.83 .net] stableとunstable的な
57 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/07/30(月) 03:31:08.03 .net] >>52 devel=正式以外含めた最新版だと思ってる人が多いとけど実際はその認識でも間違いはない感じ 名前通り開発する人が必要なものが追加されてる版、なのでバージョンも含めていろいろ試せるように最新なのが普通 商業用だったりディストリ毎のルールとかもあるから一概にはいえないけど
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/03(金) 21:05:43.37 .net] ?
59 名前:名無しさん@お腹いっぱい。 [2012/08/05(日) 00:53:22.29 .net] zshって、コマンド内にコメント含められないの?bashだとできるのに。 ls -al#a みたいな。
60 名前:名無しさん@お腹いっぱい。 [2012/08/05(日) 01:36:11.72 .net] setopt interactive_comments 対話環境(スクリプトではない、プロンプトが出る環境)でコメントを機能させる
61 名前:59 [2012/08/05(日) 02:18:34.27 .net] おお、そんなオプションが。ありがとうございます
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 10:45:37.83 .net] test
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 10:49:20.39 .net] test
64 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 11:10:55.60 .net] こっちで。 [test] 書きこみテスト 専用スレッド 11 [テスト] toro.2ch.net/test/read.cgi/unix/1316244666/
65 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/08(水) 15:18:49.64 .net] すいません、ありがとうございます。
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/20(月) 18:07:07.61 .net] 非インタラクティブシェルとして起動するとき、aliasなどの設定ファイルを 読み込ませたいのですが、どうすればいいでしょうか?
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/08/20(月) 18:10:02.01 .net] .zshenv に書く。
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/09/24(月) 16:20:06.91 .net] $HISTFILEを手動で編集した後 fc -Rしても変更が反映されない(削除した行がbck-i-searchに候補として出てくる)んだけど どうして?
69 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/09/24(月) 21:39:45.49 .net] 追加されてるからかな
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 16:28:40.94 .net] .zsh_history に日本語含んだコマンドは正常に保存されないの? そういうコマンドも履歴検索したいんだが.
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 17:28:46.97 .net] 環境依存なのかな? こっちだとできた ↑
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 17:54:23.99 .net] >>71 うそ,まじで.自分の手元では Windows7 64bit, zsh 4.3.12 (i686-pc-cygwin) Ubuntu12.04, zsh 4.3.17 (i686-pc-linux-gnu) のどちらでも無理だ. echo ほげ が echo ほぃ? みたいに .zsh_history に保存される.マルチバイトを考慮してない感じがする.
73 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 18:42:48.03 .net] >>72 MacOSX 10.7.5 zsh 5.0.0 (MacPortsからのインストール) lessやtailでみると echo ほぃ? になってるけど historyで確認すると echo ほげ となっているので, C-rではちゃんと下になるな
74 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 20:18:46.93 .net] >>72 Arch Linux (uname -r は 3.6.6-1-ARCH) zsh 5.0.0-3だけど, >>73 と同じく,lessでみるとecho ほぃ<B2>ぃ<A7>ってなってるけど, historyやC-p, M-pではちゃんと echo ほげぇ ってなってるよ.
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/18(日) 20:36:46.76 .net] >>73 zsh 4.3 でも history コマンドなら日本語表示できるわ. zsh のバージョンを zsh-5.0.0 を試してみたら 73 と同じように C-r で日本語でも大丈夫だった. 理想的には .zsh_history 自体にきちんと保存して欲しいけど.
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/11/23(金) 01:34:55.51 .net] おー、文字によって化けたり化けなかったりするんだねー。 まあ内部形式なのかもしれないし、これで正しいのかも。少し無理があるか。
77 名前:名無しさん@お腹いっぱい。 [2012/12/03(月) 01:31:10.17 .net] .zsh_history は、0x80-0x9f の符号が現れると 0x83 をメタキャラクタとしてくっつける。 作者はこれを仕様と言ってるんで、ヒストリファイル を使う場合は手動で除去するしかないね。。。 (またはソースコードでこの部分をコメントアウトして コンパイルするか…)
78 名前:73 mailto:sage [2012/12/03(月) 11:39:00.77 .net] >>77 内部で設定されているエンコードかと思って 変換できないか確認してダメだったけど そういうことだったのね
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/03(月) 23:51:59.68 .net] あーそうなんだ。 .zsh_history は 0x80-0x9f の符号を何として扱ってるんだろうね。
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/10(月) 20:38:45.04 .net] 算術演算をする (( )) ですが、中でプロセス置換 `` や $() を使うと挙動に違いが出ます。 $ cat hoge 0]1 $ (( i = `cat hoge | cut -d] -f2` )) zsh: command not found: i $ (( i = $(cat hoge | cut -d] -f2) )) $ echo $i 1 zshでは``と$()は同一なものではないのですか?bashだと両者は同じになるのようですが。
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/10(月) 21:11:51.31 .net] >>80 知らんかったけど、backquoteじゃなくて、$() 使った方がいいよ、って言うてはるね backquoteはネストできん。などなど… ttp://zsh.sourceforge.net/Guide/zshguide05.html#l117
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/11(火) 00:22:27.86 .net] $() 使った方がいいと思うけど、それは別として↓の結果を見ると bash は ((...)) をとにかく arithmetic evaluation として解釈して、 zsh は arithmetic evaluation として解釈できるときだけしてるように見えるね。 % bash -c '(( echo [ ))' bash: ((: echo [ : syntax error: invalid arithmetic operator (error token is "[ ") % zsh -c '(( echo [ ))' [ `...` の中にあるんだから解釈できるとは思うけど置換前に判別してるのかね。 man には More precisely, `((...))' is equivalent to `let "..."'. ってあるしバグなんじゃない?
83 名前:80 mailto:sage [2012/12/13(木) 08:46:32.66 .net] >>80 ,81 ありがとうございます。 不思議なのが、[ と ] 以外の記号だと大丈夫なんですよね。 これはバグと思ったほうがいいかもですね。
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/14(金) 00:51:33.91 .net] % zsh -c '(( `echo "["|echo 1` ))' zsh:1: command not found: 1 % zsh -c '(( `echo "[]"|echo 1` ))' % zsh -c '(( `echo "("|echo 1` ))' zsh:1: command not found: 1 % zsh -c '(( `echo "()"|echo 1` ))' って感じで ( でも出るよ。 括弧の対応がとれてないとなるのかもね。多分それだけじゃないけど。 バグなら法則性を求めてもあんまりしかたない気はするけど。
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/16(日) 17:38:41.99 .net] /etc/z*を読み込まないようにする設定ってユーザ権限の範囲でできない?
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/16(日) 17:56:45.58 .net] 「そう思うんならお前がパッチ書け」で終了
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/16(日) 17:58:19.89 .net] それおもしろくないからやめた方がいいよ。
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/16(日) 18:08:16.07 .net] >>85 ~/.zshenv の中で setopt NO_GLOBAL_RCS すれば一番最初に読まれる zshenv 以外はスルーされるんじゃね
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/17(月) 16:30:14.11 .net] zsh-5.0.0(4.3系でも一緒でした)で補完候補に日本語ファイルがある場合、 文字化けするんじゃなくて$'\202'$'\240'.txt の様に文字コードで表示されて しまうのですが、原因に心当たりがある方いらっしゃいましたらご教示下さい。
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/18(火) 02:35:53.33 .net] configureで--enable-multibyteされなかったとか?
91 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/18(火) 08:38:57.41 .net] レスありがとうございます、環境をもうちょっと詳しく書きますね。 Androidでmultibyte-enableなzshを動かすべく、arm-linux上でstaticに ビルドし、正常動作するバイナリを作成しました。これをAndroidに持って 来ると一見普通に動いている様なんですが、補完候補の日本語がコード 表示されてしまうんです。原因何だと思いますか?
92 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/22(土) 14:13:21.16 .net] setopt printeightbit
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 00:59:04.41 .net] 標準エラー出力のみをパイプに出力するには $ command 2>&1 >/dev/null | command2 とすればいいようですが、これの仕組みが分かりません。 なんで 2>&1 としてるのに標準エラー出力は/dev/nullに行かないのですか?
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 07:34:36.52 .net] >>93 何回目のFAQだよw 2>&1を実行している時点で標準出力(パイプ)が標準エラー出力にコピーされる。 (以後、2はパイプを指す) 次に、>/dev/null で標準出力が/dev/nullに変更されるが、 これはすでに2にコピー済みの標準エラー出力には関係ない。
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 08:34:16.69 .net] >>93 zshのバグです。でも便利なのでずっと直されてません。
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 09:39:01.22 .net] >>95 え?
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 17:42:22.34 .net] おまえらってzedつかってる?
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:03:32.29 .net] x="a b c"; for i in $x; do echo $i; done ってやると、ash/bash だと、 a b c って出ますが、zsh だと、 a b c となってしまいます。 ash/bashと同じ動きをさせるにはどうすればいいでしょうか?
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:20:19.15 .net] >>98 set -o shwordsplit
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:21:41.94 .net] >>98 >>99 以外だと${=x} を使ってもおk
101 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:24:31.16 .net] >>94 それだと標準エラー出力も/dev/nullに流れてしまうことになり、 説明になってません。 >>95 なるほど、バグだったのですか。 こういうバグは直せないですよね。直すと既存のスクリプトが動かなくなりますし。
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:36:16.44 .net] >>101 バグではない 理解が足りないだけだろ
103 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:36:52.25 .net] >>101 ム板に帰れ
104 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:44:56.48 .net] >>99 ,>>100 ありがとうございます!
105 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 18:44:57.11 .net] 記憶が朧げだが、昔シェルスクリプト入門を謳ってネットで配布されていたテキストでも 同じ間違いをやらかしてなかったか
106 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/28(金) 21:07:49.29 .net] おお、いつのまにか zsh 5.0.2 が。 数値記法の 1_000 ってそういえば ruby にそんなんあったな。すっかり忘れてたけど。 setopt 的でもあるのか。
107 名前:93 mailto:sage [2012/12/29(土) 18:53:23.86 .net] >>94 もしかして >/dev/null よりも | が先に解釈されるんですか? というか一般的に、リダイレクトよりもパイプの解釈が優先されるのがシェルの仕様?
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/29(土) 20:40:41.91 .net] >>107 リダイレクトは左から順に処理されるだけ. 普通のコマンドは 1 => /dev/stdout 2 => /dev/stderr だが,2>&1 は「2の出力先を1と同じにする」から 1 => /dev/stdout 2 => /dev/stdout (= 1) になって,>/dev/null は「1の出力先を /dev/null」にするから 1 => /dev/null 2 => /dev/stdout になる. >/dev/null で 1 と 2 が同時に /dev/null となることはない. パイプは /dev/stdout の出力が次のコマンドの /dev/stdin になるので, この場合は標準エラー出力だけパイプされる. ちなみに &> /dev/null とすると「1と2の出力先を(同時に) /dev/null にする」 ことができる.man bash で RIDIRECTION のところ読め.
109 名前:108 mailto:sage [2012/12/29(土) 21:23:21.25 .net] 書いてて思ったんだけど, command1 2>&1 >/dev/null | command2 じゃなくて command 2>/dev/stdout >/dev/null | command2 って書いても同じ意味だよね? 後者で書いたほうが わかりやすいと思うんだけど,環境によっては動かなかったり するのかな?
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/29(土) 21:25:32.38 .net] >>93 は dup2 を知らないとよく陥る勘違いですな FAQ になるのもわかる せっかく zsh を使ってるのだから command1 >&- 2> >(command2) とでもするのが良いのかもしれん
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/29(土) 21:38:57.37 .net] >>109 zsh のデフォルトの setopt multios な環境では意図通りには動かないね setopt nomultios では大丈夫だけど デフォルトの環境だと command1 2>/dev/stdout >&- | command2 ときちんとクローズする必要があるんじゃないかな
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/29(土) 22:23:27.12 .net] >>111 うーむ,ほんとだ.複数リダイレクトできるのも便利なんだが. bash でいけるならいいか.シェルスクリプトで zsh は使わないよね? setopt multios の状態で,試しにクローズしてやってみたけど, $ command1 2>/dev/stdout >&- | command2 command1: line n: write error: Bad file descripter と怒られる.command1 の 1 を破棄しないといけないのかと思ったが $ command1 2>/dev/stdout >/dev/null >&- | command2 command1: line n: write error: Bad file descripter 変わらず. $ command1 2>/dev/stdout >&- >/dev/null | command2 にしたら意図通りエラーが無くなった.リダイレクトの順番で 挙動が変わるのがよくわからんけど,あまり深入りしないほうがいいかな.
113 名前:93 mailto:sage [2012/12/30(日) 00:58:27.95 .net] >>108 ありがとうございます。そっか、2>&1 を特別視してましたが これも単なるリダイレクトなんですね。
114 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/30(日) 16:32:16.44 .net] >>112 代わって深入りしといたよ。 >/dev/null >&- だと最終的に close(1) されてるから無効だけど >&- >/dev/null だと close(1) 後に open してるから有効になる。 >&- とか <> とかあんまり用途が思い付かなかったけど、 >&- には multios 下での用途があるのか。multios 下でも特殊なことをしなければ不要な気がするけど。
115 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/30(日) 17:23:02.43 .net] 環境によって挙動に予想がつかないところがあるから、結局は # 伝統的な方法 command1 2>&1 >/dev/null | command2 # プロセス置換を使う command1 >/dev/null 2>>(command2) あたりで落ち着くな 念を入れるなら /dev/null のかわりに >&- を使えばいいのか 昔から思ってるけど、リダイレクトの周りの空白の入れ方って悩ましいよね ファイル記述子の場合は制限があるし 最近は空白を使わずに詰めて書くことが多いかな
116 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/30(日) 18:33:08.52 .net] さっぱり話題についていけん・・・(´・ω・`) manを読む努力せんとなぁ
117 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/30(日) 19:50:17.40 .net] >>115 リダイレクト先がファイルパスなら空白入れてるわ 数字なら詰めて書く…っていうか詰めないと駄目か?
118 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 22:50:20.01 .net] 配列の要素の最大・最小を返す機能てないですか?こんな感じで $ a=(1 3 2) $ echo $a[MAX] 3 さすがにないですかね?でもzshならやってくれそうな気も
119 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 23:30:46.18 .net] 変数で大小判定させて より大きければ変数1をそれにする :MAX処理 より小さければ変数2をそれにする :min処理 というシェルスクリプトでいけそうだな。
120 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/09(水) 00:46:12.87 .net] echo ${${(n)a}[-1]} とか。${} が二重になるのがちょっといやなんだよなあ。
121 名前:同じ要領で最小つくればいい mailto:sage [2013/01/09(水) 01:11:52.84 .net] できた。.zshrcに書いて0以上の整数値を因数にぶちこんで動作する Max() { x=$1 for i in $@ do if test $x -lt $i ; then ^ x=$i fi done echo $x } ********* 動作の一例 ********* Max -10 -1 -1 Max -10 2 -1 1 2
122 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/09(水) 02:23:48.76 .net] >>120 ありがとうございます。(n)でnumericalソートを意味するんでしょうかね? ただ、man zshparamを見てみたんですがソート云々のオプションはなさそうでした。 どの辺見ればいいですか? >>121 いやそれは・・・
123 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/09(水) 02:49:41.16 .net] zshexpn
124 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/09(水) 03:04:57.95 .net] >>123 ありがとうございます!
125 名前:118 mailto:sage [2013/01/09(水) 23:30:08.16 .net] 何度もすいません、配列絡みでもう1つ質問させてください。 zshの配列の要素数って上限ありますか? $ test=({1..300000}) $ echo $test[270000] zsh: subscript too big: 270000 bashだとちゃんと返してくれるのですが・・・。 $ for((i=1;i<300000;i++)) ; do test[$i]=$i ; done $ echo ${test[270000]} 270000
126 名前:名無しさん@お腹いっぱい。 [2013/01/09(水) 23:49:41.44 .net] >>125 やってみたけど、 $ test=({1..300000}) $ echo $test[270000] 270000 $ echo $ZSH_VERSION 5.0.0 $ uname -a Darwin thyme.local 12.2.1 Darwin Kernel Version 12.2.1: Thu Oct 18 16:32:48 PDT 2012; root:xnu-2050.20.9~2/RELEASE_X86_64 x86_64 i386 MacBookAir5,2 Darwin
127 名前:118 mailto:sage [2013/01/10(木) 00:11:06.98 .net] >>126 4.3.17だったのですが、5.0.2に上げたらあっさりできました・・・ やはりzshはこまめにアップデートしたほうがいいですね。 どうもありがとうございました。
128 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/10(木) 04:29:38.47 .net] これか > The arbitrary limit on parameter subscripts (262144) has been removed. As it was not > configurable and tested in an inconvenient place it was deemed preferable to remove it completely. > The limit was originally introduced to prevent accidental creation of a large parameter array > by typos that generated assignments along the lines of "12345678=0". The general advice is not to do that.
129 名前:名無しさん@お腹いっぱい。 [2013/01/10(木) 10:41:43.81 .net] ★★★チベットの独立は日本の核心的利益である★★★ jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/78 ¥¥¥¥¥¥¥『万有サロン』書き込み大賞・総額100万円¥¥¥¥¥¥¥¥¥¥¥¥ この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v 万有サロン jbbs.livedoor.jp/study/3729/ 書き込み大賞の詳細 jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/78- 書き込み大賞の詳細(資料倉庫内) www2.tba.t-com.ne.jp/a-z/omake/banyu/taisho.htm また、あらゆる疑問に関する質問を、携帯電話やメールでも受け付けています。 電話番号 080-4437-4187 メール aaa-zzz@tba.t-com.ne.jp ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
130 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/29(火) 21:47:07.59 .net] 配列をexportするのって駄目なんだっげ? export array=(a b c)てやったら怒られた
131 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/30(水) 00:38:13.63 .net] >>130 そのコード/bin/shだとokみたいやけど、zshやとエラーなるね ary=(x y z); export ary ってやらないとダメっぽい あと、typesetでごにょごにょやってもいけるみたいやけど、どっちにしても1ステートメントでは無理なのかも
132 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/30(水) 03:06:16.11 .net] >>131 うーむary=(x y z); export aryでエラーは出ないんだけど、子プロには届いてないっぽい shも同じだわ 配列ってそういうもんだったっけ?
133 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/30(水) 13:36:49.42 .net] >>132 配列はexportできんらしい。しらんかた ttp://www.bookshelf.jp/2ch/unix/1266642605.html#125 ttp://www.mazn.net/blog/2008/11/29/161.html
134 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/30(水) 19:21:02.51 .net] zshなら…それでもzshなら何とかしてくれる
135 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/31(木) 08:42:34.96 .net] そもそもどういう経緯で「配列を環境変数に使える」って思い込みができたんだろう PATHだって:でくっつけた文字列でしょ?
136 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/31(木) 15:55:45.30 .net] 環境変数という概念が介在していないように見える。 シェル変数をプロセス間で持ち回るにはexport、ぐらいの認識なんじゃね?
137 名前:130 mailto:sage [2013/02/01(金) 00:22:47.76 .net] >>135 そんなに変な発想かな?できたらできたで便利だと思うんだけど 実装されていないのは、オーバーヘッドがでかいから? or それとも単に需要がない? >>136 その程度の認識です、自分あんま詳しくないもんで つか、正しくは「プロセス間で持ち回る」じゃなくて「子プロセスに渡す」だよね
138 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/02/01(金) 00:28:42.05 .net] ちょっと実験してみたのですが $ zsh --version zsh 5.0.2 (x86_64-redhat-linux-gnu) $ typeset -ix i $ i=1 $ typeset -ax a $ a=(a b) $ typeset +m i integer exported i $ typeset +m a array exported a $ cat file typeset +m i echo "i="$i typeset +m a echo "a="$a $ zsh file exported i i=1 a= 結局、typeset -xすると、-iや-aなどの他の属性が消されてしまうということかな 関数のexportもできたら便利だと思ったけど、関数はtypest -fによる属性だからこれも無理かな
139 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/02/02(土) 10:49:55.09 .net] 環境変数はシェル変数ではないから基本的には用途違い(ともいいきれないか)だけど、 子シェルに配列変数を渡したいってことかな。それも環境変数的に。 export ENV="$(typeset -p i a)" zsh -c 'eval $ENV; ...' とかはしたくないってことなんだよね。 typeset -xT FOO foo が近いかな。これも子シェルで typeset しないとだめだから大差ないか。 ついでに separator と同じ文字が使えないし。 typeset -xT FOO foo foo=(a b) zsh -c 'typeset -xT FOO foo; ...' どこで使うのかしらないけど↑の ENV みたいなんを .zsh* でなんかすれば なんとかなんじゃない? どーしてもやりたければ。
140 名前:130 mailto:sage [2013/02/05(火) 02:08:57.36 .net] >>139 例示thx。そのやり方はさすがに面倒なんで諦めます 以前ならawkとかperlとかpythonでやってたような数値演算込みのスクリプト処理を 最近は何でもかんでもzshでやろうとする癖が・・・
141 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/02/21(木) 03:45:07.04 .net] 関数の中身を履歴に加えることってできませんか?たとえば $ hoge(){ echo fuga } $ hoge fuga $ history 1 hoge(){\necho fuga\n} 2 hoge となりますが、こんなふうに関数の中で実行したものも履歴に残って欲しいんです。 $ history 1 hoge(){\necho fuga\n} 2 hoge 3 echo fuga
142 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/02/21(木) 21:08:43.40 .net] 否定する気はないけど、何のために? 対象って全関数じゃないよね。
143 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/02/22(金) 09:23:39.85 .net] プロファイラがほしいってこと? 大地氏の software design 記事のデバッグ編見た方がよさそう
144 名前:141 mailto:sage [2013/02/23(土) 03:41:02.81 .net] >>142 例えばあるファイルをサーチして開く、という自作の関数を実行した後 そのファイルをまた開きたい場合、履歴に入ってればCtrl+Pですぐ呼べますよね。 全関数はもちろんありえないですが、関数の任意の部分をコマンドなりディレクティブなりで 設定してそういうことができたりしないかなと思いまして。 >>143 プロファイラって言うんですかねこういうの?
145 名前:141 mailto:sage [2013/02/23(土) 04:51:43.04 .net] すみません、単に print -s でいけました。失礼しました。