ก่อนการติดตั้ง gnuplot GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src
ผมตั้งตัวแปรสภาพแวดล้อม ระหว่างการติดตั้งมีบางอย่างผิดปกติ
ฉันต้องการลบGNUPLOT_DRIVER_DIR
ตัวแปรสภาพแวดล้อม ฉันจะทำให้สำเร็จได้อย่างไร
ก่อนการติดตั้ง gnuplot GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src
ผมตั้งตัวแปรสภาพแวดล้อม ระหว่างการติดตั้งมีบางอย่างผิดปกติ
ฉันต้องการลบGNUPLOT_DRIVER_DIR
ตัวแปรสภาพแวดล้อม ฉันจะทำให้สำเร็จได้อย่างไร
คำตอบ:
unset
เป็นคำสั่งที่คุณกำลังมองหา
unset GNUPLOT_DRIVER_DIR
unexport
จะทำT="$MYVAR"; unset MYVAR; MYVAR="$T"; unset T
?
declare +x MYVAR
เพื่อลบการส่งออก แต่เก็บค่าไว้ในเชลล์ปัจจุบัน
export -n MYWAR
ทำงานได้ดีใน Bash
ทดสอบว่ามีตัวแปร DUALCASE อยู่หรือไม่:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
มันไม่ได้ดังนั้นสร้างตัวแปรและส่งออกมัน:
el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE
ตรวจสอบว่ามี:
el@apollo:~$ env | grep DUALCASE
DUALCASE=1
มันอยู่ที่นั่น. ดังนั้นกำจัดมัน:
el@apollo:~$ unset DUALCASE
ตรวจสอบว่ามันยังอยู่ที่นั่น:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
ตัวแปรสภาพแวดล้อม DUALCASE ที่ส่งออกจะถูกลบ
ยกเลิกการตั้งค่าตัวแปรท้องถิ่นทั้งหมดกลับไปเป็นค่าเริ่มต้นเมื่อเข้าสู่ระบบ:
el@apollo:~$ CAN="chuck norris"
el@apollo:~$ set | grep CAN
CAN='chuck norris'
el@apollo:~$ env | grep CAN
el@apollo:~$
el@apollo:~$ exec bash
el@apollo:~$ set | grep CAN
el@apollo:~$ env | grep CAN
el@apollo:~$
exec bash
คำสั่งล้างตัวแปรท้องถิ่นทั้งหมด แต่ไม่ใช่ตัวแปรสภาพแวดล้อม
ยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมทั้งหมดกลับเป็นค่าเริ่มต้นเมื่อเข้าสู่ระบบ:
el@apollo:~$ export DOGE="so wow"
el@apollo:~$ env | grep DOGE
DOGE=so wow
el@apollo:~$ env -i bash
el@apollo:~$ env | grep DOGE
el@apollo:~$
env -i bash
คำสั่งล้างตัวแปรสภาพแวดล้อมทั้งหมดเพื่อเริ่มต้นในการเข้าสู่ระบบ
echo $VARIABLE
จะดีกว่าenv | grep VARIABLE
มันเบากว่าเนื่องจากไม่จำเป็นต้องพิมพ์ตัวแปรทั้งหมดแล้วส่งผลลัพธ์ไปยังกระบวนการอื่น (grep) นอกจากนี้env | VARIABLE
สามารถจับได้มากกว่าหนึ่งตัวแปรที่ตรงกับรูปแบบเดียวกัน บวก 2 echo $VARIABLE
ทำให้เป็นไปได้ที่จะเติมชื่อตัวแปรให้สมบูรณ์โดยการกดปุ่ม <Tab> (ถ้ามีอยู่นั่นอาจเป็นคำใบ้ว่าคุณต้องการทำอะไร)
echo $VARIABLE
ไม่ได้บอกคุณว่าตัวแปรเป็นตัวแปรเชลล์ (ที่นี่เรียกว่า "ตัวแปรท้องถิ่น") หรือตัวแปรสภาพแวดล้อมซึ่งเป็นจุดสำคัญของคำแนะนำทั้งหมด
env -i bash
ดูเหมือนว่าจะสร้าง subshell (อย่างน้อยบน Mac) ซึ่งอาจมีผลกระทบที่ไม่ตั้งใจ
env | grep -e '^VARNAME='
ไปยังจุดของคุณแม้ว่าวิธีการที่เหมาะสมในการทดสอบตัวแปรจะเป็น
เนื่องจากคำถามเดิมไม่ได้กล่าวถึงวิธีการตั้งค่าตัวแปรและเนื่องจากฉันมาที่หน้านี้เพื่อค้นหาคำตอบเฉพาะนี้ฉันจึงเพิ่มสิ่งต่อไปนี้:
ใน C เชลล์ (csh / tcsh)มีสองวิธีในการตั้งค่าตัวแปรสภาพแวดล้อม:
set x = "something"
setenv x "something"
ความแตกต่างในพฤติกรรมคือตัวแปรที่ตั้งค่าด้วยคำสั่งsetenvจะถูกส่งออกไปยัง subshell โดยอัตโนมัติในขณะที่ชุดตัวแปรที่มีชุดไม่ใช่
หากต้องการยกเลิกการตั้งค่าชุดตัวแปรพร้อมชุดให้ใช้
unset x
หากต้องการยกเลิกการตั้งค่าชุดตัวแปรด้วยsetenvให้ใช้
unsetenv x
หมายเหตุ:ข้างต้นทั้งหมดฉันคิดว่าชื่อตัวแปรคือ 'x'
เครดิต:
https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/ https://www.oreilly.com/library/view/solaristm-7- อ้างอิง / 0130200484 / 0130200484_ch18lev1sec24.html
สิ่งนี้อาจใช้งานได้
export GNUPLOT_DRIVER_DIR=
env
คำสั่ง อาจเป็นกรณีที่แอปพลิเคชันที่ใช้ตัวแปรไม่แยกความแตกต่างระหว่างตัวแปรสภาพแวดล้อมที่ไม่มีอยู่และว่างเปล่า
export PAGER=
แต่นั่นเป็นการปิดใช้งานการเพจโดยสิ้นเชิง - หน้าเพจทั้งหมดของฉันจะถูกเทลงไปยังเทอร์มินัล unset PAGER
ทำเคล็ดลับแล้วเปลี่ยนกลับเป็นพฤติกรรมเริ่มต้น
ดังที่กล่าวไว้ในคำตอบข้างต้นunset GNUPLOT_DRIVER_DIR
ควรทำงานถ้าคุณเคยexport
ตั้งค่าตัวแปร หากคุณตั้งค่าไว้อย่างถาวรใน~/.bashrc
หรือ~/.zshrc
เพียงแค่ลบออกจากที่นั่นจะทำงาน