No Such Blog or Diary
外部コマンドを使わずに bash だけでテキストファイルをコピーしたい
- 2015-11-14 (Sat)
- ソフトウェア ( Linux/coLinux )
.bashrc に export LD_LIBRARY_PATH=~/opt/lib/ と書かれている環境で,glibc を configure --prefix=~/opt とやって make all install とかやってしまった.おかげで新しく実行するコマンドがインストール途中の glibc を見に行ってしまって「ライブラリロードできねーんだよボケ」と吐いて止まってしまう状況に陥った.つまりスタティックリンクされてないような普通の mv, cp, cat, ... なコマンド達が使えない.
この状況から抜け出すには .bashrc の LD_LIBRARY_PATH の設定を消してログインしなおせばいい.最も単純には echo > .bashrc とやってしまえば良いけれど,.bashrc のバックアップを取ってないのでこれをやる前にバックアップを取っておきたい.
ということで,bash の機能だけで .bashrc を .bashrc.bak にコピーするという必要が生じた(ということにした).1分位悩んだ後で思いついた解答:
while read line; do echo $line; done < ~/.bashrc > ~/.bashrc.bak
とりあえず思いついたのがこの回答だったのだけど,もっとスマートにコピーできないのだろうか?
閑話休題.
上記の状況でファイルをコピーする一番楽な方法は,LD_LIBRARY_PATH を空にすることである.
export LD_LIBRARY_PATH=""
これで状況を脱した.
もしくは状況を楽しんだままコピーだけしたいなら,コマンドを打つときにローカルで指定してもいい.
LD_LIBRARY_PATH="" cp .bashrc .bashrc.bak
なお,他のアカウントからどうにかするという手順は面倒なので却下.
- Comments: 0
- TrackBack (Close): -
Literate Haskell (.lhs) での GHC プラグマ
普通の Haskell ソース(.hs) だと下のような {-# LANGUAGE ... #-} をファイルの頭に書くのだけど,.lhs でそのまま同じに書いといたら ghc が認識してくれなくて困った.
{-# LANGUAGE FlexibleInstances,MultiParamTypeClasses,FunctionalDependencies #-}
で,{- -} がコメントだから,コメントがデフォルトになってる Literate Haskell では # LANGUAGE ... # と書くのか? とかアホなことをしつつ,最終的にプラグマはプログラムの一部なんだから頭に > つけなきゃ認識されないよなとかいうことを理解した.
ということで,こう書けばよかった:
> {-# LANGUAGE FlexibleInstances,MultiParamTypeClasses,FunctionalDependencies #-}
今まで Literate Haskell でプラグマが必要なプログラムなんか書いてなかったのでアホなことに躓いた.
- Comments: 0
- TrackBack (Close): -
単一代入だった
- 2015-11-11 (Wed)
- 一般
「12日に会議があるから出席してね」というメールが来たので予定に「12日会議」と代入しておいた.
その後,「ごめん11日だったわ」というメールが来たのだけど,単一代入なので上書きとかされなかった.
つまり,会議開始15分前に来たリマインダメールを会議開始後10分に見て,見事に遅刻したという.
なんだろ,確かに日付間違ってたメールが来てたのを見た記憶があるのだけど,予定日時の記憶の方は上書きされなかったっぽい.残念.
- Comments: 0
- TrackBack (Close): -







