bash - как найти текущую команду оболочки - PullRequest
5 голосов
/ 22 февраля 2011

Когда я запускаю команду, мне нужно установить некоторую переменную окружения оболочки, которая содержит текущую команду изнутри ".bashrc".На самом деле мне нужно обновлять PROMPT_COMMAND всякий раз, когда запускается команда, и мне нужна вся командная строка, из которой я выберу соответствующее значение.

PROMPT_COMMAND='TITLE=`echo !!`; echo $TITLE;'

Я пытался использовать echo !! внутри .bashrc, но это просто дает мне !! в качестве заголовка.Есть идеи?

Ответы [ 3 ]

8 голосов
/ 22 февраля 2011

Если вы пытаетесь обновить заголовок xterm, вы можете использовать ловушку DEBUG:

trap 'echo "$BASH_COMMAND"' DEBUG

См. сообщение в блоге .

2 голосов
/ 22 февраля 2011

хорошо - теперь, когда вы уточнили свой вопрос, я предложу другой ответ.

На самом деле, требуемое значение не доступно в качестве переменной среды, но как насчет этого:

tail -n 1 $HOME/.bash_history

Мне становится теплее?:)

edit:

примечание, если вы хотите использовать это в своем PROMPT_COMMAND, то, что вам нужно будет сделать это так:

export PROMPT_COMMAND='history -a; tail -n 1 $HOME/.bash_history'

hopeэто помогает:)

1 голос
/ 22 февраля 2011

не знаю точно, что вам нужно, но оно должно быть здесь - попробуйте :))

#!/bin/bash

echo "# arguments called with ---->  ${@}     "
echo "# \$1 ----------------------->  $1       "
echo "# \$2 ----------------------->  $2       "
echo "# path to me --------------->  ${0}     "
echo "# parent path -------------->  ${0%/*}  "
echo "# my name ------------------>  ${0##*/} "
...