일주일 전에 KDE를 사용하여 Arch Linux로 마이그레이션했습니다. 설치하기 전까지는 모든 것이 잘 작동했지만 ibus-unikey
그 ibus-qt
이후에는 열 때마다 konsole
다음 오류가 발생했습니다.
bash: #: command not found
#
입력해도 konsole
아무 일도 일어나지 않기 때문에 이것이 일반적으로 사용되는 명령이라고 생각됩니다 . 하지만 실행하면 pacman -Ss #
많은 것들이 나타납니다.
내 질문:명령은 무엇 #
이며 이 오류를 해결하려면 어떻게 해야 합니까?
이것은 내 것이고 .bashrc
,.bash_profile
PATH
$ 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
로 교체했더니 문제가 해결되었습니다.tmp
mv tmp .bashrc
무슨 일이 일어나고 있는 것 같은데, 제가 사용하고 있는 시스템에는 vi
LibreOffice 이외의 유일한 편집기가 있고 여기에 소프트웨어를 설치할 권한이 없습니다. 그래서 LibreOffice를 사용하여 .bashrc
파일을 조정했습니다. 파일에 특수문자가 추가되거나 수정된 것 같습니다 #
.
답변4
파티에 조금 늦었지만 나에게 해결책은 웹에서 샘플 bashrc를 다운로드한 다음 텍스트 편집 프로그램(Libre Office Writer)을 사용하여 형식을 변경했기 때문에 다운로드한 파일에 bashrc 포함을 붙여넣는 것이었습니다.