command substitution: ignored null byte in input がよく分からないです.
Linux でいまログインしているのが tty* なのかそれとも sshd なのかを判定して,その結果に応じて実行コマンドを変更するスクリプト
if [ -f /proc/$PPID/cmdline ]; then if [ "$(command cut -d : -f1 < "/proc/$PPID/cmdline")" != "sshd" ] && [[ $- == *i* ]]; then echo "Hello!" fi fi
を実行したところ,警告として,
command substitution: ignored null byte in input
が出力されました.
この警告,どうも Bash ver. 4.4 からのものらしく,書かれている通り,input された null byte を無視したとのもののよう.対策は,
if [ -f /proc/$PPID/cmdline ]; then if [ "$(command cut -d : -f1 < "/proc/$PPID/cmdline"|tr -d "\0")" != "sshd" ] && [[ $- == *i* ]]; then echo "Hello!" fi fi
のように tr で NULL を削除すれば良いだけのよう.bash では null 文字の代入ができないということみたいですね.
https://qiita.com/ayumi-ikeda/items/04ab4be9d48667461bc3
以上!