리눅스 떠들썩한 파티 변수 범위

리눅스 떠들썩한 파티 변수 범위

먼저, 쉘에서 프로그램을 실행시 문제에 대해, 쉘이 프로그램을 찾는 방법을 생각?

쉘은 명령을 찾기 위해 $ 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

C / C ++ 상호 학습 QQ 그룹 : 877 684 253

나는 마이크로 편지 : xiaoshitou5854

추천

출처www.cnblogs.com/xiaoshiwang/p/12066585.html