В качестве приближения вы можете сделать:
trap '{ type -p -- "${BASH_COMMAND%% *}" >&3; } 3>&2 2> /dev/null' DEBUG
set -o functrace -o xtrace
Ловушка DEBUG
запускается перед каждой командой. Во время выполнения этой ловушки $ BASH_COMMAND
устанавливается на текущую команду. Это включает в себя вызовы функций, встроенные команды, присваивания ... Мы вызываем type -p
в первой части этого до первого символа пробела с stdout type
, перенаправленным на stderr оболочки (через fd 3, так что вывод xtrace
перенаправляется на / dev / null
).
Это приблизительное значение, поскольку оно не будет работать в таких случаях, как "cmd" foo
или $ CMD foo
. Как и для xtrace
, остерегайтесь перенаправления stderr.
Без изменения скрипта:
BASH_ENV=<(cat <<'EOF'
trap '{ type -p -- "${BASH_COMMAND%% *}" >&3; } 3>&2 2> /dev/null' DEBUG
EOF) bash -o functrace -x your-script
Или чтобы он был в приглашении PS4
:
BASH_ENV=<(cat <<'EOF'
{ trap '{ cmdpath=$(type -p -- "${BASH_COMMAND%% *}")
} 2> /dev/null' DEBUG;} 2> /dev/null
EOF) PS4='+[$cmdpath] ' bash -o functrace -x your-script
или чтобы избежать вилки:
BASH_ENV=<(cat <<'EOF'
{ trap '{ hash -- "${BASH_COMMAND%% *}";} 2> /dev/null' DEBUG;}2>/dev/null
EOF) PS4='+[${BASH_CMDS[${BASH_COMMAND%% *}]}] ' bash -o functrace -x your-script
Ссылка:ветка Reddit для того же вопроса .Спасибо u/kmt1980 за помощь. Размещение здесь от его имени для других, кто сталкивается с этой проблемой.
Plymouth требует ранней -инициализации KMS, как указано в Arch wiki . Это можно сделать, добавив драйвер VGA в MODULES
в mkinitcpio.conf
отредактируйте /etc/mkinitcpio.conf
и добавьте имя драйвера в MODULES=(...)
. Моя строка MODULES
выглядит так
MODULES=(i915)
i915
потому что интегрированная графика Intel. Вы можете найти свой драйвер VGA с помощью этой команды:
lspci -v | grep -A10 VGA | grep driver
Наконец, запустите mkinitcpio -p linux
для регенерации ramfs.