Команда экспорта не найдена в su - user

awkрешение:

awk -F'|' '{ for(i=6;i<=10;i++) print $1,$2,$3,$4,$5,$i,$11,$12,$13 }' OFS='|' file

Выход:

a|b|c|d|e|1|f|g|h
a|b|c|d|e|2|f|g|h
a|b|c|d|e|3|f|g|h
a|b|c|d|e|4|f|g|h
a|b|c|d|e|5|f|g|h

  • for(i=6;i<=10;i++)-перебор ключевых полей
2
25.08.2019, 15:37
2 ответа

Как заметил steeldriver, вполне вероятно, что ваш целевой пользователь использует csh или tcsh. Если вы хотите быть уверены в используемой вами оболочке, вызовите ее явно:

su - "$USER" -c \
  "/bin/ksh -c 'export ORACLE_HOME=$ORA_HOME;export PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba'"

Хотя (вспомогательная )оболочка будет содержать все (экспортированные )переменные среды из основной оболочки, она не будет содержать никаких (неэкспортированных )переменных оболочки из основной оболочки пользователя.

1
27.01.2020, 22:16

Вам все равно не нужно экспортировать. Просто беги:

su - $USER -c "ORACLE_HOME=$ORA_HOME;PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba"

Параметр exportнужен только в том случае, если вам нужно, чтобы переменные наследовались любыми дочерними оболочками, запускаемыми вашей оболочкой. Здесь вы запускаете команду из той же оболочки, поэтому нет необходимости export.

Но, как указано в комментариях, это не поможет, если sqlplusнужно видеть эти переменные, только если их нужно установить, чтобы правильно найти sqlplus. Если это не помогло, попробуйте:

su - $USER -c "ORACLE_HOME='$ORA_HOME' PATH='$ORA_HOME/bin:$PATH' sqlplus / as sysdba"
0
27.01.2020, 22:16

Теги

Похожие вопросы