新しいターミナルを開くたびに間違いが起きる、
エラー: 「bash: 'export: コマンドが見つかりません」
export all_proxy="" と export ALL_PROXY="" をターミナルにコピーするだけで、新しいターミナルを開くと、状況の画像が表示されます。
これは写真です:
次のコマンドを入力します:
grep export ~/.bashrc
出力:
次のコマンドを入力します:
env SHELLOPTS=xtrace \
BASH_XTRACEFD=7 \
PS4='[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> ' \
7> >(grep ‘) bash -l
出力:
答え1
.bashrc ファイルを編集したようです。
このエラーを正確に再現するには、
'‘export'
.bashrcの最後の行として
確認するには、実行してください
grep export ~/.bashrc
grep
上記のような出力が返された場合は、~/.bashrc ファイルから編集して削除してください。
編集: 最後の投稿編集から、'export' で始まる 2 行があることがわかります。これらを両方とも ~/.bashrc から削除します。
答え2
そのコマンドをそのままコピー&ペーストしたと仮定すると、U+2018の‘export
場所にコマンドが見つからないというエラーが表示されます。‘
左一重引用符'
非 ASCII 文字 (ASCIIアポストロフィ/一重引用符 (U+0027) または ASCIIバックティック/アクサングラーブ (U+0060) 文字と混同しないでください`
)。
その文字は に対して特別な意味を持たないためbash
、次のようなコマンドラインでは、
‘export foo=bar’
(’
U+2019は右の一重引用符です)
‘export
引数としてコマンドを実行すると解釈されますfoo=bar’
。次のように記述した場合:
'export foo=bar'
代わりに、U+2018 と U+2019 が ASCII アポストロフィに置き換えられます。これはbash
引用演算子であるため特別な文字であり、引数なしでコマンドを実行するものとして扱われますexport foo=bar
。そのようなコマンドは存在しません。これも必要なことではありません。
あなたが望む
export foo=bar
または
'export' 'foo=bar'
つまり、引数export
を付けてコマンドを実行しますfoo=bar
。
ここで、U+2018 文字 (および、対応する U+2019 文字がある場合はそれも) を、自分の~/.bashrc
または他の場所に挿入した場所から削除する必要があります。そのコードをコピーして貼り付けた場所がどこであっても、それらの文字はコピーされることを意図したものではありません。
偽のコマンドが導入された場所を見つけるには~/.bashrc
(最新の編集では~/.bashrc
確かに導入されていることが示されていますが)、次のコマンドを実行してみてください。
env SHELLOPTS=xtrace \
BASH_XTRACEFD=7 \
PS4='[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> ' \
7> >(grep ‘) bash -l
(ただし、bash-4.4 以降で$PS4
実行されているシェルでは無視されますがroot
、これがあなたのケースに当てはまるようです。そのため、++
ファイル名と行番号の代わりに が表示されます)。