Есть ли недокументированная переменная PS, такая как PS2, которую bash будет показывать, когда заменяет указатель слова на его фактическое значение? Думаю, это поможет прояснить, где заканчивается команда и где начинается выполнение.
Пример: я запускаю ls и cat. cat использует последний аргумент предыдущей команды с указателем слова, !$
. bash заменяет указатель слова на фактическое значение в новой строке, а затем выводит команду:
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
cat .bash_profile
# .bash_profile
# Get the aliases and functions
[...]
Чтобы было понятнее, я прошу переменную, которая вставляла бы текст перед заменой, что-то вроде
> export MISSING_VARIABLE='--->'
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
--->cat .bash_profile
[...]
Вы можете попросить bash показать вам каждую развернутую команду перед ее выполнением, установив
shopt -s histverify
или вы можете использовать функцию чтения строки shell-expand-line
, который, я думаю, по умолчанию привязан к Мета Контроль E чтобы расширить то, что вы уже набрали. На странице руководства говорится
Это выполняет расширение псевдонима и истории, а также все расширения слов оболочки.