постфикс выполняет mailbox_command
с uid получателя. Это должно сделать -d $ {USER}
ненужным.
http://www.postfix.org/postconf.5.html#mailbox_command
mailbox_command (по умолчанию: пусто)
Необязательная внешняя команда, которую локальный (8) агент доставки должен использовать для доставки в почтовый ящик. Команда запускается с идентификатором пользователя и привилегиями идентификатора основной группы получателя. Исключение: доставка команд для root выполняется с привилегиями $ default_privs.
Две альтернативы. Последний вариант более запутан, но безопаснее, так как не требует, чтобы вы знали, сколько каталогов содержится в переменной:
$ echo ${ORACLE_HOME%/*/*/*/*}/
/oradba/app/
$ echo $ORACLE_HOME | awk -F/ 'BEGIN {OFS="/"} {print $1,$2,$3,""}'
/oradba/app/
С помощью выреза (закрепки на конце/
):
ORACLE_HOME=$(printf "%s" "$ORACLE_HOME" | cut -d/ -f1-3)/
Использование расширения параметра дважды; первый удаляет первые два элемента каталога, затем второй удаляет оставшиеся элементы исходной переменной:
suffix=${ORACLE_HOME#/*/*/}
ORACLE_HOME=${ORACLE_HOME%"$suffix"}
Попробуйте:
echo $ORACLE_HOME | cut -d/ -f-3
Например:
$ ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
$ echo $ORACLE_HOME | cut -d/ -f-3
/oradba/app
$