[ruby-list:50721] ENV / ARGV でNULL文字で終わってしまう

From: haruka@...
Date: 2018-12-24 14:32:18 UTC
List: ruby-list #50721
皆様こんばんは、正木です。

環境変数(ENV)または引数(ARGV)でNULL文字を含む文字列を渡すと、
Ruby側ではNULL文字で終端したものとして扱われてしまいます。

% export param=$'a\000b'
% ruby -e 'p ENV["param"]'
"a"
% ruby -e 'p ARGV[0]' "$param"
"a"

恐らくシェル側の問題ではありません。

% cat <<< "$param" | ruby -e 'p ARGF.read'
"a\u0000b\n"
% print -r "$param" | ruby -e 'p ARGF.read'
"a\u0000b\n"

バグでしょうか?
この問題は特に環境変数としてMarshal文字列を渡そうとした場合に問題になります。

よろしくお願いします。

In This Thread

Prev Next