bash 셸을 시작할 때마다 txt 파일을 열어주는 별칭을 .bashrc 파일에 작성했습니다. 문제는 그러한 파일을 한 번만 열고 싶습니다. 처음으로 쉘을 열 때입니다.bashrc에서 별칭을 한 번만 사용하십시오.
그렇게 할 방법이 있습니까?
bash 셸을 시작할 때마다 txt 파일을 열어주는 별칭을 .bashrc 파일에 작성했습니다. 문제는 그러한 파일을 한 번만 열고 싶습니다. 처음으로 쉘을 열 때입니다.bashrc에서 별칭을 한 번만 사용하십시오.
그렇게 할 방법이 있습니까?
이 문제에 대한 일반적인 해결책은 어떤 종류의 세션 잠금을 설정하는 것입니다. 다른 파일을 편집중인 프로세스의 PID 및/또는 tty로/tmp/secret 파일을 작성하고 완료되면 잠금 파일을 제거 할 수 있습니다. 이제는 이미 존재하는 다른 세션이이 파일을 만들지 않도록 설정해야합니다.
적절한 잠금은 복잡한 주제이지만 간단한 경우에는 충분할 수 있습니다. 그렇지 않은 경우 Google에서 '상호 배제'를 요청합니다. 잘못하면 보안에 영향을 미칠 수 있습니다.
왜이 별칭을 사용하고 있습니까? 코드는 별칭 정의가 아닌 .bashrc에 직접 있어야합니다. 그래서 말하자면, 만약
, 당신이 당신의 .bashrc
에 지금 가지고있는 것은
alias start_editing_my_project_work_hour_report='emacs ~/prj.txt &̈́'
start_editing_my_project_work_hour_report
unalias start_editing_my_project_work_hour_report
같은 것이 ... 후 잠금으로, 별명없이, 당신은
# Obtain my UID on this host, and construct directory name and lock file name
uid=$(id -u)
dir=/tmp/prj-$uid
lock=$dir/pid.lock
# The loop will execute at most twice,
# but we don't know yet whether once is enough
while true; do
if mkdir -p "$dir"; then
# Yay, we have the lock!
(echo $$ >"$lock" ; emacs ~/prj.txt; rm -f "$lock") &
break
else
other=$(cat "$lock")
# If the process which created the UID is still live, do nothing
if kill -0 $other; then
break
else
echo "removing stale lock file dir (dead PID $other) and retrying" >&2
rm -rf "$dir"
continue
fi
fi
done
같은 것을 끝낼 수있다
나는이 질문에 대한 동기를 이해하지 못한다. 첫 번째 로그인시에만 명령을 실행하려면'.login' 또는'.bash_login'에 넣으십시오.이 명령은 실행 쉘인 .bashrc와 달리 로그인 쉘인 경우 sh와 비슷한 쉘에서 실행됩니다. 로그인 bash 쉘과 비 로그인 bash 쉘 모두. –
이 파일을 편집하려고했지만 작동하지 않았습니다. 나는 'gvim path/file.txt'명령을 넣었고 bash 세션을 시작했을 때 아무 일도 일어나지 않았다. – whatsup
아마도 그 문제를 대신 해결하려고 노력해야합니다. 별도의 질문 게시! – tripleee