Bash: #: 명령을 찾을 수 없습니다

Bash: #: 명령을 찾을 수 없습니다

일주일 전에 KDE를 사용하여 Arch Linux로 마이그레이션했습니다. 설치하기 전까지는 모든 것이 잘 작동했지만 ibus-unikeyibus-qt이후에는 열 때마다 konsole다음 오류가 발생했습니다.

bash: #: command not found

#입력해도 konsole아무 일도 일어나지 않기 때문에 이것이 일반적으로 사용되는 명령이라고 생각됩니다 . 하지만 실행하면 pacman -Ss #많은 것들이 나타납니다.

내 질문:명령은 무엇 #이며 이 오류를 해결하려면 어떻게 해야 합니까?

이것은 내 것이고 .bashrc,.bash_profilePATH

$ cat .bashrc
   #
   # ~/.bashrc
   #

   # If not running interactively, don't do anything
   [[ $- != *i* ]] && return
$ cat .bash_profile
   #
   # ~/.bash_profile
   #

   [[ -f ~/.bashrc ]] && . ~/.bashrc


   alias ls='ls --color=auto'
   PS1='[\u@\h \W]\$ '


$ echo $PATH
   /usr/local/texlive/2015/bin/x86_64-linux:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

보충 1:@terdon이 제안한대로 나는 달렸습니다.

$ grep -FH '\#' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null

그러나 아무것도 발견하지 못했습니다. 그런데 그 명령이 나에게 주어졌습니다.

$ grep -P '(^|\s+)(\.|source) .' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
   /home/thuyenarc/.bash_profile:[[ -f ~/.bashrc ]] && . ~/.bashrc
   /etc/bash.bashrc:[ -r /usr/share/bash-completion/bash_completion   ] && . /usr/share/bash-completion/bash_completion
   /etc/profile:           test -r "$profile" && . "$profile"
   /etc/profile:   . /etc/bash.bashrc
   /etc/profile.d/locale.sh:    . "$XDG_CONFIG_HOME/locale.conf"
   /etc/profile.d/locale.sh:    . "$HOME/.config/locale.conf"
   /etc/profile.d/locale.sh:    . /etc/locale.conf

보충 2:파일 이름을 바꾸고 .bashrc열어보았 konsole더니 오류가 사라졌습니다. 오류가 에서 발생한 것으로 생각됩니다 .bashrc.

답변1

이 오류는 bash의 초기화 파일 중 하나에 이스케이프 #(즉) 가 있음을 의미합니다. 또는 에 \#없는 것 같으므로 , 로드할 때 bash가 읽는 다른 파일 중 하나에 있어야 합니다. 물론 다음 1을 모두 검색하면 됩니다 .~/.bashrc~/.bash_profile

grep -FH '\#' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
              ~/.bash_aliases /etc/bash.bashrc /etc/profile \
              /etc/profile.d/* /etc/environment 2>/dev/null

이는 위에 나열된 파일 중 하나에 해당 파일이 포함되어 있음을 나타냅니다 \#. 해당 파일을 편집하고 삭제하면 모든 것이 제대로 작동합니다.

명령이 출력을 반환하지 않으면 파일 중 하나가 다른 비표준 파일을 받고 있다는 뜻이며, 그 파일이 오류를 일으키는 것입니다. 이 경우 질문을 편집하고 다음 명령의 출력을 추가하십시오.

grep -P '(^|\s+)(\.|source) .' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
                              ~/.bash_aliases  /etc/bash.bashrc /etc/profile \
                              /etc/profile.d/* /etc/environment 2>/dev/null

그러면 다른 파일을 소싱하는 모든 인스턴스가 인쇄되고 올바른 방향을 가리켜야 합니다.

더 일반적으로 #는 명령이 아니라 주석입니다. 그 뒤에 오는 모든 내용은 무시됩니다 bash. 따라서 을 실행하면 pacman -Ss #실제로는 pacman -Ss스스로 실행하는 것이므로 많은 결과를 얻을 수 있습니다.


1이 문서 중 일부는 여기와 관련이 없습니다. 예를 들어, 존재하는 경우 무시되고 ~/.profile새 터미널을 열 때 읽혀지지 않지만 만약을 대비해 모두 검색할 수도 있습니다.~/.bash_profile/etc/profile

답변2

어떤 이유로 BASH 쉘 옵션이 interactive_comments비활성화 되었을 수 있습니다. 다음을 통해 이 동작을 복제할 수 있습니다.

~ $ shopt -u interactive_comments
~ $ # 
# command not found
~ $

켜져 있는지 꺼져 있는지 확인할 수 있습니다.

$ shopt interactive_comments

출력이 "켜짐"인 경우아니요문제의 원인. "off"인 경우 파일(/u/tedron의 답변)을 grep하여 설정된 위치를 찾아야 합니다.

답변3

내가 겪고 있는 문제는 파일 #이전에 .bashrc보이지 않는 문자가 있거나 #처럼 보이지만 #그렇지 않은 문자가 있는 것 같다는 것입니다 #. 실행하는 동안 source .bashrc오류가 발생했습니다 . 편집기(Emacs 사용)를 사용하여 파일 내용을 새 파일에 복사 tmp하고 실행하면 source tmp오류가 없습니다. 그래서 파일을 ( ) .bashrc로 교체했더니 문제가 해결되었습니다.tmpmv tmp .bashrc

무슨 일이 일어나고 있는 것 같은데, 제가 사용하고 있는 시스템에는 viLibreOffice 이외의 유일한 편집기가 있고 여기에 소프트웨어를 설치할 권한이 없습니다. 그래서 LibreOffice를 사용하여 .bashrc파일을 조정했습니다. 파일에 특수문자가 추가되거나 수정된 ​​것 같습니다 #.

답변4

파티에 조금 늦었지만 나에게 해결책은 웹에서 샘플 bashrc를 다운로드한 다음 텍스트 편집 프로그램(Libre Office Writer)을 사용하여 형식을 변경했기 때문에 다운로드한 파일에 bashrc 포함을 붙여넣는 것이었습니다.

관련 정보