bash에서 환경 변수를 내보내는 동안 자동 완성이 작동하지 않음

사가르 굽타

MYPATH다음 두 경로를 유지 하는 환경 변수를 내보내고 싶다고 가정 해 보겠습니다.

  1. / full / path / to / fileA
  2. / another / full / path / to / fileB

그래서 bash에서 다음과 같이해야한다고 생각합니다.

$export MYPATH=/full/path/to/fileA:/another/full/path/to/fileB

내가 직면 한 문제 Tab는 명령에서 경로 A를 쓰는 동안 자동 완성 ( 키)이 작동하지만 :자동 완성이 작동을 멈춘 후에는 자동 완성이 없으면 콘솔에서 경로 B를 작성하기가 어렵습니다.

놀랍게도 다음과 같은 경우에 작동합니다.

  • 콜론 대신 세미콜론을 사용하지만 어쨌든 올바른 경로 구분자가 아닙니다.
  • 저는 루트 사용자입니다.

누군가이 행동의 이유를 설명해 주시겠습니까?

  • Bash 버전 : GNU bash, 버전 4.3.48 (1) -release (x86_64-pc-linux-gnu)
  • Bash-completion 버전 : all / xenial-updates 1 : 2.1-4.2ubuntu1.1
  • OS 버전 : Ubuntu 16.04.6 LTS
프라 산

설명하는 동작은 bash-completion으로 인해 발생할 수 있습니다 .

(다음은 현재 버전의 패키지 (2.9)를 기반으로하지만 현재 가지고있는 2.1 버전에 대해서도 상당히 정확합니다).

bash-completion은 Readline 라이브러리가 Bash의 명령에 인수로 제공되는 단어를 완성하는 데 사용 하는 일련의 완성 사양 ( compspec )을 제공합니다. 일반적으로 다음과 같은 형식으로 complete 내장 명령을 사용하여 정의됩니다 .

complete -F function command

들어 export내장 함수는 _export로 정의된다 /usr/share/bash-completion/completions/export.

전체의 단어 (또는 끝을)를 포함 할 때 =, _export(첫 번째의 오른쪽에있는 부분을 완성하려고 =파일이나 디렉토리 이름으로 실제로,); 완료 할 단어에이 포함되지 않은 =경우 변수 이름으로 완료하려고합니다. Readline 라이브러리는 COMP_WORDBREAKS변수에 나열된 문자 중 하나를 가로 질러 실행될 때마다 (문자가 이스케이프되지 않는 한) 새로운 완성을 시작하기 때문에 (문자가 이스케이프되지 않는 한), :변수 값에 추가 한 첫 번째 콜론 다음에 완성 작업이 중지됩니다. 포인트, 완료 할 단어는 =더 이상 a를 포함 (또는 끝) 하지 않습니다.
(참고로, 파일 / 디렉토리 이름 완성은 작성 export myvar=/usr/:othervar=하고를 누르면 다시 작동하기 시작합니다 Tab.)

bash-completion에는 실제로 특수한 경우를 처리하는 자체 메커니즘이 있습니다. 예를 들어, :scp콜론의 오른쪽에있는 것을 원격 경로로 해석 하는 compspec for 에서 올바르게 처리됩니다 . 하지만에는 동일하게 적용되지 않습니다 export.

현재 명령에 대한 compspec을 찾을 수 없을 때 트리거되는 Readline의 기본 동작 은 궁극적으로 파일 이름 완성을 시도하는 것입니다. 이것이 bash-completion이 설치되지 않았거나 비활성화되었을 때 path2in 완료가 export var=/path1/:/path2/작동하는 이유 입니다 (모든 콜론이 새로운 완료를 시작한다는 점을 기억하십시오).

그러면 무엇을 할 수 있습니까? 몇 가지 대안이 있습니다.

  1. GitHub 에서 bash-completion에 대한 기능 요청을 제출합니다 .

  2. 에 대한 자신의 완성 함수를 정의하십시오 export.
    먼저 compspec을 사용자 완료 파일 (아직 존재하지 않을 가능성이 있음)에 복사합니다.

    $ cat /usr/share/bash-completion/completions/export >>~/.bash_completion
    

    그런 다음 ~/.bash_completion으로 변경 complete -F _export export하여 편집 complete -F _export -o default export합니다. 이것은 export의 특정 compspec이 결과를 제공하지 않을 때 기본 완료를 시도하도록 Readline에 지시 합니다.

  3. bash-completion에서 제공하는 대신 기본 완성을 사용하십시오.
    에 추가 ~/.bashrc:

    complete -o default -o bashdefault export
    

    ( bash-completion의 FAQ의 제안 ). 단점은 변수 이름과 export옵션 을 완성 할 수 없다는 것 입니다.

  4. bash-completion에 충분히 익숙해 지려면 _export(2)에서와 같이 :특별히 처리 할 수 ​​있도록 제공된 함수를 편집 하여 자신의 함수를 정의하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자동 완성 제안이 Ajax에서 작동하지 않음

분류에서Dev

jQuery 내에서 CSS 변경이 작동하지 않음

분류에서Dev

SQL Azure에서 호환성 수준을 변경하는 방법, 내 명령이 작동하지 않습니다.

분류에서Dev

DurandalJS 모달보기에서 자동 완성이 작동하지 않음

분류에서Dev

키 프레임 변경 내용 속성이 Firefox에서 작동하지 않음

분류에서Dev

zsh에서 Bazel 탭 자동 완성이 작동하지 않음

분류에서Dev

jQuery에서 자동 완성이 작동하지 않음

분류에서Dev

Outlook 2007에서 자동 완성이 작동하지 않음

분류에서Dev

Listview 내에서 touchEnabled = false를 설정하는 동안 티타늄 레이아웃이 작동하지 않음

분류에서Dev

Linux에서 환경 변수 내보내기가 변수와 함께 작동하지 않습니다.

분류에서Dev

txt 파일에서 변수를 읽는 동안 생성자가 올바르게 작동하지 않습니다.

분류에서Dev

루트로 로그인하는 동안에는 자동 완성이 작동하지 않습니다.

분류에서Dev

API에서 데이터를 가져 오는 동안 오류 자동 완성 기능이 작동하지 않습니까?

분류에서Dev

SwiftUI에서 @State 변수를 변경하여보기 새로 고침이 작동하지 않음

분류에서Dev

모든 커밋에 대한 git 작성자 정보를 변경하면 내 저장소 중 하나에서 작동했지만 다른 저장소에서는 작동하지 않았습니다. 이유는 무엇입니까?

분류에서Dev

진입 점 파일에서 환경 변수 내보내기가 작동하지 않습니까?

분류에서Dev

Excel 용 VBA, 함수를 작성하는 동안 activecell이 작동하지 않음

분류에서Dev

모달 내에서 작동하지 않는 Google 위치 자동 완성

분류에서Dev

CSS에서 작동하지 않는 자동 완성 흰색 배경

분류에서Dev

Google 장소 자동 완성이 내 에뮬레이터 또는 VMware에서 작동하지 않습니다.

분류에서Dev

vscode 자동 완성이 js 함수에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Jquery 자동 완성은 Jsfiddle에서 작동하지만 페이지에서는 작동하지 않습니다.

분류에서Dev

양식 제출로 데이터를 보내지 않는 자동 완성

분류에서Dev

때때로 자동 완성이 Python IDE에서 작동하지 않는 이유

분류에서Dev

sequelize-cli에서 작동하지 않는 Kubernetes 환경 변수

분류에서Dev

Windows 8에서 작동하지 않는 환경 변수 설정

분류에서Dev

Phalcon Config에서 작동하지 않는 환경 변수

분류에서Dev

Ubuntu 14.04에서 작동하지 않는 환경 변수

분류에서Dev

sudo에 대한 환경 변수를 보존하는 다음 방법이 작동하지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    자동 완성 제안이 Ajax에서 작동하지 않음

  2. 2

    jQuery 내에서 CSS 변경이 작동하지 않음

  3. 3

    SQL Azure에서 호환성 수준을 변경하는 방법, 내 명령이 작동하지 않습니다.

  4. 4

    DurandalJS 모달보기에서 자동 완성이 작동하지 않음

  5. 5

    키 프레임 변경 내용 속성이 Firefox에서 작동하지 않음

  6. 6

    zsh에서 Bazel 탭 자동 완성이 작동하지 않음

  7. 7

    jQuery에서 자동 완성이 작동하지 않음

  8. 8

    Outlook 2007에서 자동 완성이 작동하지 않음

  9. 9

    Listview 내에서 touchEnabled = false를 설정하는 동안 티타늄 레이아웃이 작동하지 않음

  10. 10

    Linux에서 환경 변수 내보내기가 변수와 함께 작동하지 않습니다.

  11. 11

    txt 파일에서 변수를 읽는 동안 생성자가 올바르게 작동하지 않습니다.

  12. 12

    루트로 로그인하는 동안에는 자동 완성이 작동하지 않습니다.

  13. 13

    API에서 데이터를 가져 오는 동안 오류 자동 완성 기능이 작동하지 않습니까?

  14. 14

    SwiftUI에서 @State 변수를 변경하여보기 새로 고침이 작동하지 않음

  15. 15

    모든 커밋에 대한 git 작성자 정보를 변경하면 내 저장소 중 하나에서 작동했지만 다른 저장소에서는 작동하지 않았습니다. 이유는 무엇입니까?

  16. 16

    진입 점 파일에서 환경 변수 내보내기가 작동하지 않습니까?

  17. 17

    Excel 용 VBA, 함수를 작성하는 동안 activecell이 작동하지 않음

  18. 18

    모달 내에서 작동하지 않는 Google 위치 자동 완성

  19. 19

    CSS에서 작동하지 않는 자동 완성 흰색 배경

  20. 20

    Google 장소 자동 완성이 내 에뮬레이터 또는 VMware에서 작동하지 않습니다.

  21. 21

    vscode 자동 완성이 js 함수에서 작동하지 않는 이유는 무엇입니까?

  22. 22

    Jquery 자동 완성은 Jsfiddle에서 작동하지만 페이지에서는 작동하지 않습니다.

  23. 23

    양식 제출로 데이터를 보내지 않는 자동 완성

  24. 24

    때때로 자동 완성이 Python IDE에서 작동하지 않는 이유

  25. 25

    sequelize-cli에서 작동하지 않는 Kubernetes 환경 변수

  26. 26

    Windows 8에서 작동하지 않는 환경 변수 설정

  27. 27

    Phalcon Config에서 작동하지 않는 환경 변수

  28. 28

    Ubuntu 14.04에서 작동하지 않는 환경 변수

  29. 29

    sudo에 대한 환경 변수를 보존하는 다음 방법이 작동하지 않는 이유는 무엇입니까?

뜨겁다태그

보관