Python-версия вашей оболочки. Будьте осторожны, я не проверял.
from subprocess import run
def bash(command):
run(command.split())
>>> bash('find / -name null')
/dev/null
/sys/fs/selinux/null
/sys/devices/virtual/mem/null
/sys/class/mem/null
/usr/lib/kbd/consoletrans/null
Одним из запутанных вариантов может быть:
. /dev/stdin <<< 'return "$exit_code"'
(не разветвляется, а создает временный файл или канал в 5.1+)
Для полноты картины
Обратите внимание, что в ksh93 (exit "$ret")
не разветвляет подоболочку, поэтому там он относительно эффективен.
bash
— одна из немногих оболочек, подобных Bourne -, где нельзя написать set_status() return "$1"
для краткости.
В zsh
вы можете использовать анонимную функцию:
() return 3
Когда у меня возникает такая потребность, я лично использую:
set_status() { return "$1"; }
Который кажется мне самым простым.
Но в заключение, ответ на есть ли простая команда Bash, которая просто устанавливает код выхода нет AFAIK.
Я считаю, что настраиваемая функция — ваш лучший выбор (вариант 2 в вашем вопросе ).