teltelの日記: which の… 4
日曜日に、vine のアップデートしたら、at コマンドが効かなくなった。そもそも、録画が全くできないという、所から始まったわけだが、そこはまず、pt1 関連のドライバーも全部コンパイルからしなおし、とりあえず、出力が出るようにはしたが、なぜか at で録画予約しても、うまく録れない。
んで、実は /var/spool/mail/ に user 向けに at の失敗メールが送られているわけだが、
sh: 行 65: 予期しないトークン `$'=\\(\\)\\ {\\ \\ {\\ "\n"\\ alias\\;"\n"\\ declare\\ -f"\n"\\ }\\ \\|\\ /usr/bin/which\\ --tty-only\\ --read-alias\\ --read-functions\\ --show-dot\\ --show-tilde\\ \\${1+\\"\\$@\\"}"\n"}'' 周辺に構文エラーがあります
sh: 行 65: `"}; export BASH_FUNC_which()'
ってなかんじ。
最近、どうも付け加わったらしい。アップデート後に。んで、これって /var/spool/at/ の実行スクリプトを見ると、確かに 65 行目あたりにあるわけだ。んだども、この at のスクリプトはどの環境を読み込んでるんだろうって、見てみて色々と観察したりググったり調べたりするとどうも自分の環境らしい。むー。自分じゃなにもしてない訳で、これはどうやらどっか別の所の問題だな。ということから at の rpm の中身を調べたりしてみたが、次のスクリプトでぐぐったら、
which ()
{
(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
export -f which
なんのことはない、which の man page が引っかかる。なんかこの手の設定が追加されたのかな。
ってな訳で、bash の読み込むファイルを片っ端からチェックしたら、/etc/profile.d/which-2.sh が原因だった、という。
# rpm -qf /etc/profile.d/which-2.sh
which-2.20-2vl6.x86_64
むむー。
とりあえず、この設定をうっちゃってみたらきちんと at が走るようになりました。
うちも最近失敗するようになってググったらこの日記だけが見つかりました (スコア:1)
VineLinuxだけなんでしょうかね。
もしかして、ちょっと前にあった bash の脆弱性 へのパッチ以降で起きてる?
Re:うちも最近失敗するようになってググったらこの日記だけが見つかりました (スコア:1)
コメント先の日記タイトルを "witch の…"と空目。
// which(1) コマンドに言及していたのを覚えていなかったのです
atコマンドは使ったことはないが (スコア:0)
試したら、再現したです。
jobを登録すると/var/spool/atにシェル変数やら設定してコマンドを発行するファイルができるのですが、そこに↓こんなのが。
BASH_FUNC_which()=\(\)\ {\ \ {\ "
"\ alias\;"
"\ declare\ -f"
"\ }\ \|\ /usr/bin/which\ --tty-only\ --read-alias\ --read-functions\ --show-dot\ --show-tilde\ \${1+\"\$@\"}"
"}; export BASH_FUNC_which()
どこが作っているのやら。
ボクも困ってました (スコア:0)
ボクもvineバージョンアップ後の突然のatコマンド不調で、面食らっておりました。
> とりあえず、この設定をうっちゃってみたらきちんと at が走るようになりました。
申し訳ありませんが、「この設定」のうっちゃり方をお教えいただけませんでしょうか。
もしかして、/var/spool/at 配下に作られるファイル中の当該箇所を削除またはコメントアウトするということでしょうか?
どうぞよろしくお願いいたします。