Это - ширина Вашего текущего окна терминала, измеряемого как количество символов ASCII.
От man bash
:
COLUMNS
Used by the select builtin command to determine the terminal
width when printing selection lists. Automatically set upon
receipt of a SIGWINCH.
Также в более универсальном ksh
:
COLUMNS
If this variable is set, the value is used to define the
width of the edit window for the shell edit modes and for
printing select lists.
Для практической части заметьте, что значение этой переменной изменяется, когда размеры Вашего окна виртуального терминала изменяются. (Это - когда вышеупомянутое упомянуло SIGWINCH
отправляется в активную оболочку).
Существует несколько проблем с Вашим кодом.
su
читает пароль из /dev/tty
, не от stdin
, таким образом, Вы не можете перенаправить пароль как это. На самом деле, что su
делает по умолчанию запуск оболочка как целевой пользователь, поэтому если Вы выполняете это как root
:
su - testuser <<- _EOF_
123456 #password
_EOF_
su
успешно выполнится (корню не нужен пароль, чтобы сделать это), но 123456
будет передан как вход оболочке пользователя, которая является, почему, когда Вы запускаете свой скрипт, Вы видите:
-bash: line 1: 123456: command not found
Если Вы хотите сделать это как некорневой пользователь, необходимо, вероятно, последовать совету и использованию bahamt sudo
, который может быть настроен для предложения доступа без паролей к определенным командам как другой пользователь.
Даже если su
работы, это порождает новый процесс. su
команда вышла (и возвратилась к исходной учетной записи), перед ls
команда выполняется. Таким образом, то, что Вы действительно хотите:
su - testuser <<EOF
ls -lih
EOF
Я думаю, что Вы найдете, что не можете зафиксировать его. Я думаю это su
чтения /dev/tty
для пароля, и я полагаю, что Вы не можете действительно перенаправить к тому волшебному файлу устройств.
При использовании Linux можно проверить что su
чтения для пароля с strace
.
script
(утилита назвала сценарий, не пишут сценарий), для переносаsu
, но это - взлом. Действительно ужасный взлом. Согласитесь с Хорошим sudo – Patrick 15.02.2012, 02:01