Принятый ответ действительно полезен! Просто добавить, что подстановка процесса (т.е. <(COMMAND)
) не поддерживается в некоторых оболочках (например, dash
).
В моем случае я пытался создать настраиваемое действие (в основном, однострочный скрипт оболочки) в файловом менеджере Thunar, чтобы запустить оболочку и активировать выбранную виртуальную среду Python. Моя первая попытка была:
urxvt -e bash --rcfile <(echo ". $HOME/.bashrc; . %f/bin/activate;")
где %f
- это путь к виртуальной среде, обрабатываемой Thunar.
Я получил ошибку (при запуске Thunar из командной строки):
/bin/sh: 1: Syntax error: "(" unexpected
Тогда я понял, что мой sh
(по сути dash
) не поддерживает подстановку процессов.
Мое решение состояло в том, чтобы вызвать bash
на верхнем уровне, чтобы интерпретировать подстановку процесса за счет дополнительного уровня оболочки:
bash -c 'urxvt -e bash --rcfile <(echo "source $HOME/.bashrc; source %f/bin/activate;")'
В качестве альтернативы я попытался использовать здесь-документ для dash
, но безуспешно. Что-то вроде:
echo -e " <<EOF\n. $HOME/.bashrc; . %f/bin/activate;\nEOF\n" | xargs -0 urxvt -e bash --rcfile
P.S .: У меня недостаточно репутации, чтобы оставлять комментарии, модераторы, пожалуйста, не стесняйтесь перемещать их в комментарии или удалять, если они не помогают в этом вопросе.