내 .bash_logout 파일을 사용하여 스크립트에서 bash를 어떻게 실행할 수 있나요?

내 .bash_logout 파일을 사용하여 스크립트에서 bash를 어떻게 실행할 수 있나요?

나는 서브셸에서 bash를 실행하고 싶고, 사용자가 서브셸에서 나갈 때 다른 명령(로그를 파일에 저장하는 것과 같은)을 실행하고 싶습니다.

이 같은:

실행.sh:

#!/bin/bash 

function save_information_to_file()
{
    echo "${date} ${time} new bash subshell ended !"
}
# Some commands etc.

env PS1='SubShell:' bash --rcfile /home/username/.bashrc

if [ user_logout_from_subshell ]
then 
     save_information_to_file()
fi;

구현하다:

user: ./run.sh
2016-08-12 14:55:13 new bash subshell started...
SubShell: echo "wow..."
wow... 
SubShell: pwd
/home/username
SubShell: cat user.log
2016-08-11 17:54:32 bash started
2016-08-11 17:56:14 bash ended
2016-08-11 18:23:18 bash started
2016-08-11 18:39:30 bash ended
SubShell: exit
exit
2016-08-12 14:59:41 new bash subshell ended !
user:

종료 시 실행되어야 하는 파일 경로로 bash를 실행하는 방법은 무엇입니까?

답변1

특별한 기술이 필요하지 않습니다. 이것으로 충분합니다:

#!/bin/bash 

env PS1='SubShell:' bash --rcfile /home/username/.bashrc

echo Subshell exited. Now doing something...

서브쉘은 메인 터미널에서 실행됩니다. 기본 스크립트는 추가 명령 없이 완료될 때까지 기다립니다.

(셸에서 이것을 설정하는 방법을 모르겠습니다 PS1. 서브셸 Bash가 시작되면 덮어쓰게 되는 것 같습니다.)

답변2

내 첫 번째 생각은 .bash_logout이었지만 로그인 쉘에서만 작동합니다. 가장 간단한 방법(로그인 쉘과 비로그인 쉘 모두에서 작동)은 종료 시 트랩을 설정하는 것입니다. 작동 방식은 다음과 같습니다.

트랩 "your_commands_go_here" 종료

예를 들어, $ bash $ trap "echo goodbye cruel world!" EXIT $ exit exit goodbye cruel world!

답변3

각 사용자의 홈 디렉터리에 .bash_logout이라는 파일이 있습니다. 여기에 원하는 명령을 삽입해 보세요.

답변4

.bash_logout이 홈 디렉터리에 없을 수 있습니다. 나는 과거에 이런 상황에 처해 있었습니다. 이런 경우에는 vi/vim을 실행하고 홈 디렉터리에 .bash_logout 파일을 직접 생성하면 됩니다.

관련 정보