Hur avmarkerar jag en variabel på kommandoraden?

Jag har försökt följande kommando för att ställa in Proxy på yaourt:

export ALL_PROXY=http://proxy.example.com:8080 

Frågan är hur man avmarkerar proxyn på yaourt? Hur kan jag i allmänhet avmarkera värdet på en variabel i det aktuella skalet?

Kommentarer

  • Försök unset ALL_PROXY
  • @coffeMug kan lika gärna göra det till ett svar, du kan också överväga att stjäla lite information härifrån: stackoverflow.com/a/12263914 / 1081936
  • utöver det accepterade svaret, om det ' ett kommando kör du ofta som använder en miljövariabel som du ' Om du inte vill ställa in eller ändra för resten av din shell-session, kan du köra den som: $ ALL_PROXY=http://proxy.example.com:8080 yaourt som bara ställer in envvar för kommandokörningen . Du kan placera så många FOO=bar BAZ=bat variabler som du vill innan kommandot körs.

Svara

För att ta bort en miljövariabel, kör

unset ALL_PROXY 

Observera att en miljövariabel bara träder i kraft i ett program och programmet det lanserar. Om du ställer in en miljövariabel i ett skalfönster påverkar det inte andra skalfönster.

Om du har lagt till export ALL_PROXY=… till en initialiseringsfil tar du bort det därifrån.

Du kan köra export utan argument för att se vilka miljövariabler som är inställda i det aktuella skalet.

Kom ihåg att för att göra en skalvariabel tillgänglig för de program som startas av det skalet måste du exportera den, antingen genom att köra export VAR efter uppgiften VAR=VALUE eller genom att kombinera de två (export VAR=VALUE).

Kommentarer

  • Jag tror att det ' är inte nödvändigt att export VAR inträffar efter tilldelningen. Observera: sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F' skriver ut " F2 = 2 \ nF1 = 2 ".
  • unset krävs också för att rensa associativa basmatriser (dvs. bash " hashtabeller " eller " dikterar "), som denna handledning förklarar under avsnittet med titeln " Rensa ": artificialworlds.net/blog/2012/10/17/… .

Svar

För att avmarkera en bunden variabel i bash använder du unset VARIABLE (unset ALL_PROXY i ditt fall). Detta kommando raderar faktiskt variabeln. Du kan också ställa in värdet på en variabel till att vara tom genom

VARIABLE= 

eller

VARIABLE="" 

Skillnaden är att de två senare kommandona inte tar bort variabeln. Du kan se skillnaden genom att använda -u -flaggan med set för att tvinga den att behandla de inställda variablerna som ett fel när de ersätter:

/home/user1> var="" /home/user1> echo $var /home/user1> set -u /home/user1> echo $var /home/user1> unset var /home/user1> echo $var -bash: var: unbound variable 

I exemplet ovan klagar bash på var är obundet (efter att ha avaktiverat värdet) vilket är det förväntade felet (notera att detta inte händer i andra ekokommandot, vilket betyder att var har ett värde som är empty eller null).

Kommentarer

  • vad händer om jag har en variabel i min shell-skriptfil och jag köper den filen, hur ska jag då avmarkera den?
  • @Abhinav använder unset i skriptet. gäller.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *