리눅스 떠들썩한 파티 변수 범위
먼저, 쉘에서 프로그램을 실행시 문제에 대해, 쉘이 프로그램을 찾는 방법을 생각?
쉘은 명령을 찾기 위해 $ PATH 환경 변수에 정의 된 디렉토리로 이동합니다. 환경 변수는 일반적으로 포함하는 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
프로그램이 확실히 시간이 걸립니다 찾기 위해 너무 많은 디렉토리를,이 디렉토리는 프로그램의 수천 많은, 많은 년간의 디렉토리가 있습니다. 캐싱 메커니즘을 검색 효율을 향상 사용하기 위해 쉘은, 이 메커니즘이 호출됩니다 hash
. .
찾을 수있는 해시 캐시, 쉘 해시 이동의 내부로 발견하는 경우, 사용하는 것이다 발견 후, 찾을 디렉토리에 정의 된 $ PATH 환경 변수에 가기 전에, 발견되지 않는 경우는, 플러스 프로그램 이름에 도로 왕의 명령 해시.
참고 : 쉘 명령 buildin 경우가 아닌 해시에.
해시 명령 사용 :
프로그램이하는 모든 캐시 해시보기 :
hash
조회수 : 명령의 대표는, 여러 번 맞았다.
# hash hits command 1 /usr/bin/cat 2 /usr/bin/ls
상세보기 캐시 해시있는 프로그램은 다음과 같습니다 :
hash -l
# hash -l builtin hash -p /usr/bin/cat cat builtin hash -p /usr/bin/ls ls
캐시를 지우기 :
hash -d cat
# hash -d cat # hash hits command 2 /usr/bin/ls
모든 캐시를 지우십시오 :
hash -r
# hash -r # hash hash: hash table empty
왜 캐시를 취소해야합니까? 이유 : 명령이 명령을 찾을 수 없습니다 원래 캐시를 사용, 다른 디렉토리로 이동하는 경우, 쉘은 오류를보고합니다, 당신이 원하는 모든 웁니다.
두, bash는 변수 범위
후손 프로세스 쉘 프로세스.
쉘 프로세스가 다시 다른 쉘 프로세스를 시작하고, 다음의 예는의 있도록하는 CSH를 시작했다 다시 시작한 후 떠들썩한 파티에서 다시 시작 bash는, 떠들썩한 파티입니다.
# pstree systemd─┬ ├─sshd───sshd───bash───pstree # bash # csh # pstree systemd─┬ ├sshd───sshd───bash───bash───csh───pstree
변수의 bash는 유형 :
변수 범위의 범위에 의해 분할 :
지역 변수 :은 현재 쉘 프로세스 범위
지역 변수의 범위를 확인합니다 :
# firstName=jerry # echo $firstName jerry # csh # echo $firstName firstName: Undefined variable. # exit exit # echo $firstName jerry
할당 : 이름 = 값
참조 : $ {이름}, $ 이름
- ""변수는 값으로 대체됩니다
- '': 변수는 값으로 대체되지 않습니다
변수보기 : 세트
취소 변수 : 해제 이름입니다. 이전 이름과 $에주의를 지불하지 마십시오
# firstname=tom # echo $firstname tom # unset firstname # echo $firstname
환경 변수 : 현재 쉘 프로세스의 범위 및 그들의 자손 프로세스 쉘.
검증 환경 변수의 범위 :
# fn=tom # echo $fn tom # export fn # csh # echo $fn tom # exit exit # echo $fn tom
할당 :
수출 이름 = 값
이름 = 값
수출의 이름
이름 = -x 값을 선언
이름 = 값
-x 이름을 선언
견적 : 지역 변수와 함께.
취소 변수 : 해제 이름입니다. 이전 이름과 $에주의를 지불하지 마십시오
임베디드 환경 변수를 비난 :
PATH
,HISTORY
,HISTSIZE
,HISTFILESIZE
,HISTCONTROL
,SHELL
,HOME
,UID
,PWD
,OLDPWD
환경 변수 명령을보기 :
export
,declare -x
,printenv
,env
읽기 전용 변수 (상수) : 범위가 현재 쉘 프로세스이며, 취소 할 수 없습니다. 현재 쉘 프로세스의 종료와 함께 종료되었습니다.
- -r 이름을 선언
- 읽기 전용 이름
검사 인증서 일정한 범위 :
# la=foo # declare -r la # echo $la foo # csh # $echo la echo: Undefined variable. # exit exit # echo $la foo # la=aa -bash: la: readonly variable [root@localhost ~]# unset la -bash: unset: la: cannot unset: readonly variable
- 로컬 변수 : 만 함수 내의 변수 범위에서 기능.
쉘 스크립트 매개 변수 : 위치 매개 변수
특수 변수 :
- $에 : 명령 실행 결과. 0 : 성공; 255 : 실패했습니다.
- ...
수행 함께 강타, more 명령
연속 여러 명령을 실행 :
command1;command2;command3...
이 명령이 실행됩니다.
연속 실행 명령 로직 복수
이전 명령 (성공 또는 실패) 결과에 따르면, 명령 실행을 백업할지 여부를 결정합니다.
이전 명령이 성공하면, 허용 실행하기 전에 후자의 명령 :
&&
예 : 먼저이 디렉토리에 들어가기 전에, 디렉토리가 존재 여부 존재를 확인
# pwd /root # ls /sdf && cd /tmp ls: cannot access /sdf: No such file or directory # pwd /root # ls /sdf || cd /tmp ls: cannot access /sdf: No such file or directory # pwd /tmp
이전 명령 실행을 허용하기 전에, 다음 명령을 실패 후 :
||
예 : 첫 번째는 사용자가 존재하는 사용자를 생성하지 않는, 존재 여부, 생성 된 없다.
# pwd /root # ls /sdf || cd /tmp ls: cannot access /sdf: No such file or directory # pwd /tmp