1週間前に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の初期化ファイルの1つにエスケープ#
(つまり)があることを意味します。または に\#
ないようなので、ロードするときに bash が読み取る他のファイルの 1 つになければなりません。もちろん、次の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
これは、上記のファイルの1つにそのファイルが含まれていることを示します\#
。そのファイルを編集して削除すると、すべてが正常に機能します。
コマンドが出力を返さない場合は、ファイルの1つが別の非標準ファイルを受け取っていることを意味し、そのファイルがエラーを引き起こします。この場合、質問を編集し、次のコマンドの出力を追加します。
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
パーティーに少し遅れていましたが、私の解決策はWebからサンプルbashrcをダウンロードしてからテキスト編集プログラム(Libre Office Writer)を使用してフォーマットを変更したため、ダウンロードしたファイルにbashrcを含めるように貼り付けることでした。