ฉันจะยกเลิกการตั้งค่าตัวแปรที่บรรทัดคำสั่งได้อย่างไร


80

ฉันได้ลองคำสั่งต่อไปนี้เพื่อตั้ง Proxy บนyaourt:

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

คำถามคือวิธีการยกเลิกการตั้งค่าพร็อกซี่yaourt? โดยทั่วไปแล้วฉันจะยกเลิกการตั้งค่าของตัวแปรในเชลล์ปัจจุบันได้อย่างไร?


7
ลองunset ALL_PROXY
coffeMug

@coffeMug อาจทำให้เป็นคำตอบคุณสามารถลองขโมยข้อมูลจากที่นี่: stackoverflow.com/a/12263914/1081936
terdon

นอกเหนือจากคำตอบที่ยอมรับแล้วหากมีคำสั่งที่คุณมักเรียกใช้ซึ่งใช้ตัวแปรสภาพแวดล้อมที่คุณไม่ต้องการตั้งค่าหรือเปลี่ยนแปลงในส่วนที่เหลือของเซสชันเชลล์คุณสามารถเรียกใช้งานได้เช่น: $ ALL_PROXY=http://proxy.example.com:8080 yaourtซึ่งจะตั้งค่า envvar สำหรับ รันคำสั่ง คุณสามารถใส่FOO=bar BAZ=batตัวแปรได้มากเท่าที่คุณต้องการก่อนที่คำสั่งจะทำงาน
เฉพาะ

คำตอบ:


113

ในการลบตัวแปรสภาพแวดล้อมให้รัน

unset ALL_PROXY

โปรดทราบว่าตัวแปรสภาพแวดล้อมมีผลเฉพาะในโปรแกรมและโปรแกรมที่เปิดใช้ หากคุณตั้งค่าตัวแปรสภาพแวดล้อมในหนึ่งหน้าต่างเชลล์มันจะไม่ส่งผลกระทบต่อหน้าต่างเชลล์อื่น ๆ

หากคุณเพิ่มลงexport ALL_PROXY=…ในไฟล์เริ่มต้นให้ลบออกจากที่นั่น

คุณสามารถรันexportโดยไม่มีอาร์กิวเมนต์เพื่อดูว่าตัวแปรสภาวะแวดล้อมใดถูกตั้งค่าในเชลล์ปัจจุบัน

โปรดจำไว้ว่าการทำให้ตัวแปรเชลล์พร้อมใช้งานสำหรับโปรแกรมที่เริ่มต้นโดยเชลล์นั้นคุณต้องเอ็กซ์พอร์ตมันโดยการรันexport VARหลังจากการมอบหมายVAR=VALUEหรือโดยการรวมสอง ( export VAR=VALUE)


19

หากต้องการยกเลิกการตั้งค่าตัวแปรที่ถูกผูกไว้ในการใช้งานทุบตีunset VARIABLE( unset ALL_PROXYในกรณีของคุณ) คำสั่งนี้จะลบตัวแปรอย่างแท้จริง คุณยังสามารถตั้งค่าของตัวแปรให้ว่างได้

VARIABLE=

หรือ

VARIABLE=""

ความแตกต่างคือคำสั่งหลังสองคำสั่งจะไม่ลบตัวแปร คุณสามารถเห็นความแตกต่างโดยใช้-uแฟล็กด้วยsetเพื่อบังคับให้ถือว่าตัวแปร unset เป็นข้อผิดพลาดขณะแทนที่:

/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

ในตัวอย่างข้างต้น, ทุบตีบ่นเรื่องvarคือไม่ได้ผูกไว้ (หลังจาก unsetting ความคุ้มค่า) ซึ่งเป็นข้อผิดพลาดคาดว่า (ทราบว่านี้ไม่ได้เกิดขึ้นในคำสั่ง echo สองความหมายที่varมีค่าซึ่งเป็นemptyหรือnull)


ถ้าฉันมีตัวแปรในไฟล์เชลล์สคริปต์ของฉันและฉันได้ไฟล์นั้นมาฉันจะยกเลิกการตั้งค่าอย่างไร
Abhinav

@Abhinav ใช้unsetในสคริปต์ ใช้เช่นเดียวกัน
coffeMug
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.