명령이나 스크립트를 원합니다Bash를 사용하여 새 gnome 터미널 창을 열고 기록 파일을 로드한 후 열어 두세요..
터미널을 닫지 않고 터미널을 열고 명령을 실행하는 방법을 검색했는데 찾은 답변은 기본적으로 다음과 같습니다.이 stackoverflow 답변.
이러한 방법을 바탕으로 다음 명령을 실행해 보았습니다.
gnome-terminal -e "bash -c 'history -r ~/history.txt; exec $SHELL'"
그러나 새 창에 표시된 기록은 history.txt
기본 파일 이 아닙니다 .bash_history
. 소스 파일과 함께 history -r
실행한 명령 때문에 로드 중인 기록에 영향을 미치는 작업이 수행되었을 수도 있습니다 .bash
.bashrc
.bashrc
rcfile
이를 바탕으로 나중에 명령을 포함할 수 있도록 위에 링크된 답변의 옵션을 시도했으며 .bashrc
결과는 다음과 같습니다 rcfile
.
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/history.txt
그러나 다음 명령을 실행할 때:
gnome-terminal -e "bash --rcfile rcfile"
역사는 새 터미널에도 역사로 남습니다 .bash_history
. history
명령을 추가하면 기록 이 로드된 rcfile
것으로 표시 되므로history.txt
그 이후의 내용은 rcfile
내가 로드한 기록을 덮어쓰게 됩니다..
나는 또한 내가 만약에설정되지 않은 HISTFILE
변수export HISTFILE=''
끝에rcfile
기록은 history.txt
덮어쓰지 않습니다.그리고 작동합니다. 그러나 새로 열린 터미널을 사용할 때 HISTFILE
기록이 저장되기를 원하기 때문에 설정을 해제하고 싶지 않습니다..bash_history
마지막으로 -o
bash에서 이 옵션을 찾았으므로 이를 사용하여 원하는 작업을 수행해 보았습니다. 나는 rcfile
다음과 같이 변경했습니다.
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/saved/history.txt
set -o history
그리고 다음 명령을 실행하세요:
bash --rcfile rcfile.txt +o history
나는 bash
with를 실행하면 +o history
기록을 history.txt
덮어쓰는 것을 방지하고, set -o history
명령을 실행하면 rcfile
bash 기록이 다시 활성화되기를 바랐습니다. 그러나 이 역시 예상한 대로 작동하지 않습니다. 왜냐하면 기록이 원본이기 때문입니다 history.txt
. 그러나 더 이상 기록이 없으며 set -o history
작동하도록 하려면 수동으로 입력해야 합니다.
따라서 기본적으로 내가 시도하는 모든 것은 동일한 문제로 되돌아갑니다.Bash를 사용하여 새 터미널을 여는 방법그 다음에주문 실행, 사용자가 입력하는 것처럼요?
또한, 더 잘 이해하고 싶습니다.rcfile
실행 후에는 어떻게 되나요?, 내가 받고 있는 다른 관련 파일을 찾을 수 없기 때문입니다. 그리고명령줄에서 이 동작을 비활성화하는 방법이 있습니까??
답변1
질문에 언급된 변수와 파일을 사용하여 PROMPT_COMMAND
해결 방법을 찾았 습니다. rcfile.txt
명령을 실행할 수 있습니다
gnome-terminal -e "bash --rcfile rcfile.txt"
내용은 rcfile.txt
다음과 같습니다.
FILE=~/.bashrc && test -f $FILE && source $FILE
my_init_func() {
# Insert desired commands here. In my case, history -r history.txt
PROMPT_COMMAND=`echo $1`
eval $PROMPT_COMMAND
unset -f $FUNCNAME
}
PROMPT_COMMAND="my_init_func \'$PROMPT_COMMAND\'"
.bashrc
이것이 수행하는 작업 은 다른 터미널 구성이 유지되도록 기본값(있는 경우)을 가져오는 것입니다 . 그런 다음 bash에서 사용되는 함수가 호출될 때 한 번 실행될 함수를 정의한 다음 PROMPT_COMMAND
자체 설정을 해제하고 원본을 복원합니다 PROMPT_COMMAND
.