Egy új terminál minden egyes megnyitásakor hiba van,

error: “bash: export: parancs nem található “

Csak az export all_proxy =” “és az ALL_PROXY =” “exportálom a terminálra, majd amikor új terminált nyitok meg, a helyzet képén megjelenik.

Ez a kép:

írja ide a kép leírását

Beírom a következő parancsot:

grep export ~/.bashrc 

ouput:

írja ide a kép leírását

Adom meg a parancsot:

env SHELLOPTS=xtrace \ BASH_XTRACEFD=7 \ PS4="[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> " \ 7> >(grep ‘) bash -l 

output:

írja ide a kép leírását

Megjegyzések

  • Feladhatja-e a hibát adó parancsot és magát a hibát is. Úgy tűnik, hogy van egy karakter a parancs előtt.
  • @ bu5hman csak az all_proxy = " " és exportálja az ALL_PROXY = " " terminálba, majd amikor új terminált nyitok, a helyzet képén megjelenik .
  • Működnek más bash parancsok? Csináltál valamit a $ PATH ellen ebben vagy az előző terminál munkamenetben? Vagy szerkeszti a bash profilját?
  • vezető egyetlen idézet az exportálás előtt a .bashrc .bash_profile fájlban?
  • @ bu5hman Nem teszek ' semmit a $ PATH-ban először előfordul, hogy újratelepítem a kali linuxot, a második továbbra is így van. A második csak az all_proxy = " " exportálást másolja és exportálja az ALL_PROXY = " " terminálba, majd amikor új terminált nyitok, a helyzet képén megjelenik.

Válasz

Úgy tűnik, hogy szerkesztette .bashrc fájlját.

Tudom pontosan replikálja ezt a hibát, ha a

"‘export" 

-et a .bashrc fájl utolsó soraként állítom be

Az ellenőrzéshez csak futtassa

grep export ~/.bashrc 

Ha a grep a fentihez hasonló kimenetet ad, akkor szerkessze ki a ~ / .bashrc fájljából.

Szerkesztés: A legutóbbi bejegyzés szerkesztéséből láthatja, hogy 2 sor van az “exportálás” kezdettel, törölje mindkettőt f rom ~ / .bashrc.

Megjegyzések

  • Most mit tegyek?
  • Itt van ` hátulról. Az OP-nak volt egy karaktere.
  • @St é phaneChazelas Egyetértett abban, hogy a parancs szintaktikailag helytelen. A bash hiba azonban a ~ / .bashrc sorai miatt tűnik fel.
  • Szigorúan véve a parancs szintaktikailag helytálló, de csak megpróbálkozik egy parancs meghívásával (‘export), amely nem található.
  • @St é phaneChazelas Egyetértett. Szintaktikusan helyes, ha új parancsot hív meg: ‘export, de helytelen, ha a következőt hívja: export. Régebben typo ' snek neveztük őket. Igazi ördög, hogy kiszabadítsa őket a papiruszból.

Válasz

Feltételezve, hogy ezt másolással illesztette be amint van, panaszkodik, hogy a ‘export parancs nem található, ahol az a az U + 2018 bal oldala egyetlen idézőjel nem ASCII karakter (nem tévesztendő össze az ASCII " aposztróf / egyszeri idézet (U + 0027) vagy az ASCII ` backtick / grave akcentus (U + 0060) karakter).

Mivel ez a karakter semmilyen szempontból nem különleges bash, egy parancssor például:

‘export foo=bar’ 

(ahol U + 2019, a jobb oldali idézőjel)

Úgy értelmezhető, hogy a ‘export parancsot futtatja argumentumként foo=bar’ -vel. Ha írtál volna:

"export foo=bar" 

ehelyett, vagyis azoknál az U + 2018 és U + 2019-ek helyett, amelyeket az ASCII aposztróf helyettesít, egy karakter, amely a bash mivel “idéző operátor”, ezt úgy kezelték volna, mintha a export foo=bar parancsot futtatnák argumentum nélkül. Nincs ilyen parancs. Ez nem az. amit te is szeretnél.

Akarod

export foo=bar 

vagy

"export" "foo=bar" 

Ez a export parancs futtatása egy foo=bar argumentummal.

Itt lesz szükséged az U + 2018 karakter (és adott esetben a megfelelő U + 2019 karakter) eltávolítása, bárhová illesztette a ~/.bashrc be vagy bárhová. Bárhová másolta be a kódot , ezeket a karaktereket nem akarták lemásolni.

Annak megkeresése, hogy hova lett bevezetve az álparancs, ha nem a ~/.bashrc fájlban (bár a legutóbbi szerkesztés azt mutatja, hogy a ~/.bashrc valóban), megpróbálhatod futtatni:

env SHELLOPTS=xtrace \ BASH_XTRACEFD=7 \ PS4="[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> " \ 7> >(grep ‘) bash -l 

(a $PS4 -t a futó héjak figyelmen kívül hagyják root néven a bash-4.4 vagy újabb verzióval, ez azonban a te eseted, ezért látod a ++ fájlt a fájlnév helyett és sorszám).

Megjegyzések

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük