우분투에서 로그인하고 로그 아웃 할 때 스크립트를 실행해야합니다.
스크립트를 넣으려고했지만 ~/.bash_login
작동하지 않았습니다.
스크립트를 실행할 수있는 더 좋은 위치가 있습니까?
내 스크립트가 있으며 /home/gsd/script/login.sh
실행 파일입니다.
편집하다:
내가 입력하면 내 스크립트가 실행 /home/gsd/script/login.sh
되며 + x로 설정됩니다.
지금, 난 단지 있습니다 touch /home/gsd/test.txt
에서 ~/.bash_login
테스트합니다.
test.txt 파일은 절대 생성되지 않습니다
편집 2 :
gsd@laptop:~$ ll ~/.bash*
-rw------- 1 gsd gsd 38639 2012-01-25 17:25 .bash_history
-rw-r--r-- 1 gsd gsd 29 2012-01-25 15:22 .bash_login
-rw-r--r-- 1 gsd gsd 220 2011-11-03 19:22 .bash_logout
-rw-r--r-- 1 gsd gsd 3136 2011-11-04 08:00 .bashrc
답변
.bash_profile이 있으면 Bash는 .bash_login (또는 .profile)을 읽지 않습니다. 이 성가신 기능은 일부 버전의 Bash 매뉴얼에 설명되어 있지만 전부는 아닙니다.
.bash_profile
그리고 .bash_login
유사 .bash_profile
하기 때문에 일반적으로 사용되며 .bash_login
비교적 알 수 없으므로 명령을에 넣는 것이 좋습니다 . 또한 .bashrc
대신 명령을 입력 하는 것을 고려하십시오 .bash_profile
. 이 매뉴얼은 “비 대화식 비 로그인 쉘”과 “대화식 로그인 쉘”의 차이점을 설명하므로 해당 섹션을 읽으십시오.
GNU Bash Reference Manual 버전 4.1 : Bash Startup Files 는 다음과 같이 말합니다.
~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 찾고 존재
하고 읽을 수있는 첫 번째 명령을 읽고 실행합니다 .
또한 참조 수퍼 유저에이 질문을 하고, 이 배쉬 하우투는 (DO가 freeunix.dyndns.org:8088 주소로 저지 할 수 없습니다 — 여전히 좋은 품질 매뉴얼 그리고 나는 몇 년 동안 그것을 사용했습니다).
.bash_profile이 없다고 말했기 때문에 Update .
“대화식 비 로그인 셸”을 사용하지 않는 것 같습니다 (자세한 설명은 Bash 설명서를 참조하십시오).
이를 테스트하려면 다음과 같은 각 파일을 추가하십시오. .bashrc
, .bash_profile
및 .bash_login
.
echo "DEBUG: I am .bashrc"
echo "DEBUG: I am .bash_profile"
그런 다음 로그 아웃했다가 다시 로그인하십시오. 로그인하면 “DEBUG : I am .bashrc”라는 문구 만 표시되고 “I am .bash_profile”문구는 표시되지 않습니다. 그렇다면 “대화식 비 로그인 셸”을 의미합니다. 이는 단순히 Bash가 호출 .bashrc
하지만 호출 하지 않음을 의미합니다 .bash_profile
. 이러한 도트 파일이 왜 그런지에 대한 정보는 아래의 @Andrejs Cainikovs의 게시물과 http://mywiki.wooledge.org/DotFiles를 참조하십시오 .
답변
대화식 또는 비 대화식 읽기 및 실행 여부에 관계없이 로그인 쉘.profile
대화식 쉘은 읽고 실행 .bashrc
합니다.
종종 /etc/profile
소스 를 볼 수 있습니다 .bashrc
. 따라서 모든 설정 .bashrc
은 대화식인지 비 대화식인지에 관계없이 로그인 셸에서도 적용됩니다.
쉘의 초기화 스크립트 실행 순서는 쉘이 대화식인지 비 대화식인지 여부와 로그인 스크립트인지 여부에 따라 다릅니다.
bash가 대화식 로그인 쉘로 호출되면 bash는 명령을 읽고 실행합니다 /etc/profile
. 그런 다음 Bash는 첫 번째 파일 만 존재하며 다음을 읽을 수 있도록 실행하려고 시도합니다.
.bash_profile
.bash_login
.profile
이러한 파일 중 하나를 찾았지만 읽을 수없는 경우 오류가 발생합니다. 어떤 경우에는 오류가 없다 NOT 발견은.
--login
옵션 으로 비 대화식 로그인 셸을 호출 할 때도 이와 동일한 프로세스가 수행됩니다 .
답변
실행하려는 스크립트가 실행 가능한지 확인하십시오. 실행 chmod +x scriptname
그렇게 할 수 있습니다. 또한 스크립트가 올바른 shebang으로 시작하는지 확인하십시오 ( #!/bin/bash
쉘 스크립트의 경우). 예를 들어, 그것을 실행할 때 마지막으로, 모든 전체 경로를 사용하는 /usr/bin/echo
대신 echo
에 실행할 스크립트가 당신이 사용하는 것과 동일하지 않은 것을 그냥 넣다 환경.
답변
Bash 는 대화식 로그인 쉘로 실행되는 경우 .bash_login
또는 .profile
파일 만 찾습니다 . 대화 형 비 로그인 셸로 실행될 때 읽습니다 .bashrc
.
일반적으로 두 번째 경우입니다. 즉, gnome-terminal
bash를 실행할 때 비 로그인 셸로 실행됩니다.
이것은 Gnome으로 부팅하면 .bash_login
실행되지 않는다는 것을 분명히 나타냅니다 . 그러나 런레벨을 낮추어 bash로 직접 부팅하면 성공적으로 로그인하면 동일한 파일이 실행됩니다. 원격 SSH 연결의 경우에도 실행될
것이라고 가정 .bash_login
합니다.
여기 에서 부분적으로 찢어졌습니다 .