echoo.sh
나는 명령을 실행하기 전에 명령을 에코하는 것을 목표로 bash 스크립트를 작성하고 있습니다 . 내 소스의 스크립트입니다 .bashrc
. 그러나 내가 실행하는 다른 bash 스크립트에는 영향을 미치지 않습니다. 지금까지 내 코드는 다음과 같습니다.
에코
#!/usr/bin/env bash
shopt -s extdebug
get_hacked () {
[ -n "$COMP_LINE" ] && return # not needed for completion
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # not needed for prompt
local this_command=$BASH_COMMAND;
echo $this_command;
}
trap 'get_hacked' DEBUG
쉘을 열고 명령을 실행하면 작동합니다. 그러나 스크립트 파일 내부의 콘텐츠에는 작동하지 않습니다.
몇 가지 추가 시도:
.bashrc
테스트 스크립트에서 파일을 가져오려고 했지만 작동하지 않습니다.echoo.sh
테스트 스크립트의 내부 내용을 얻었고 작동했습니다.
그래서 이해하려고 노력 중이에요
.bashrc
스크립트에서 실행되는 내용에 대해 스크립트 소스만 사용하면 작동하지 않는 이유는 무엇입니까?- #2가 작동하면 #1을 더 시도해 보는 것은 어떨까요?
echoo.sh
마지막으로, 작동시키기 위해 모든 스크립트 파일의 소스 코드를 가져올 필요가 없도록 하려면 어떻게 해야 합니까 ? 스크립트를 한 곳에 두고 일부 설정을 변경하여 모든 시나리오에서 작동하도록 할 수 있습니까?
답변1
나는 모든 시도를 테스트했으며 Archlinux, bash 버전 4.4.12에서 작동합니다. 하지만 ~/.bashrc
새 셸을 얻으려면 새 대화형 셸을 열어야 합니다 .
비대화형 쉘 ~/.bashenvrc
의 export BASH_ENV=$(realpath ~/.bashenvrc)
경우 ~/.bashrc
.
~/bashenvrc
이제 비대화형 쉘을 시작할 때마다 이 스크립트를 가져옵니다.
나는 또한 이것을 테스트했다.데몬 1.7.7-1
건배