คำถามติดแท็ก environment-variables

สำหรับคำถามที่เกี่ยวข้องกับตัวแปรสภาพแวดล้อมชุดของตัวแปรแบบไดนามิกที่สามารถส่งผลต่อพฤติกรรมการทำงานของกระบวนการและการเข้าถึงทรัพยากร ใช้แท็กนี้สำหรับคำถามเกี่ยวกับตัวแปรสภาพแวดล้อมหรือคำถามเกี่ยวกับปัญหาที่เกิดจากผลกระทบของการตั้งค่าหรือแก้ไขค่าตัวแปรในการทำงานของกระบวนการทำงานและการเข้าถึงทรัพยากร

3
วิธี distro / shell-agnostic ที่ดีที่สุดในการตั้งค่าตัวแปรสภาพแวดล้อมคืออะไร
คำถามบอกว่ามันทั้งหมด ปัจจุบันฉันใช้ Arch Linux และ zsh แต่ฉันต้องการวิธีแก้ปัญหาที่ (อย่างน้อยที่สุด) ใช้งานได้ทั้งบน VT และใน xterms และ (หวังว่าควรเป็นอย่างยิ่ง) จะยังคงทำงานต่อไปถ้าฉันเปลี่ยน distros หรือ shell ฉันได้ยินว่าคำตอบของคำถามนี้แตกต่างกันอย่างมากในเอกสารของ distros ที่แตกต่างกัน Ubuntu บอกว่า "ใช้. pam_environment" ฉันคิดว่าใน Arch สิ่งที่พวกเขาแนะนำขึ้นอยู่กับเปลือกของคุณ ขณะนี้ฉันใส่ทุกอย่างใน. profileและถ้าเชลล์ไม่ได้แหล่งที่มาด้วยเหตุผลบางอย่าง (เช่นทุบตีถ้า. bash_profile มีอยู่) ฉันจะแทนที่ด้วยการจัดหามันด้วยตนเอง แต่ดูเหมือนว่าจะต้องมีวิธีที่ดีกว่า


4
ความหมายของ“ _ =” คืออะไร?
หลังจากที่ฉันเรียกใช้set -a var=99ฉันสามารถค้นหาประโยคในผลลัพธ์ของset: ... TERM=xterm UID=0 USER=root VIRTUAL_ENV_DISABLE_PROMPT=1 _=var=99 colors=/etc/DIR_COLORS ... ใครช่วยบอกฉันได้ว่า "_ =" หมายถึงอะไร ฉันทราบว่าecho $varจะไม่ให้อะไรเลย ถ้าฉันเรียกใช้set -aแล้วsetจะไม่รวมตัวแปรนี้อีก เกิดอะไรขึ้น?

9
การลบไดเรกทอรีจาก PATH
ฉันพยายามรวบรวม wxWidgets โดยใช้ MingW และฉันมี cygwin ในเส้นทางของฉันซึ่งดูเหมือนว่าจะขัดแย้งกัน ดังนั้นฉันต้องการลบออก/d/Programme/cygwin/binจากตัวแปร PATH และฉันสงสัยว่ามีวิธีที่สง่างามในการทำเช่นนี้หรือไม่ วิธีการที่ไร้เดียงสาจะสะท้อนไปยังไฟล์ลบออกด้วยตัวเองและส่งมัน แต่ฉันคิดว่ามันมีวิธีการที่ดีกว่า

3
จะเปลี่ยน PATH ภายในเชลล์สคริปต์ได้อย่างไร?
ฉันมีหลายโครงการที่ต้องการให้ฉันเปลี่ยนรุ่น Java / Grails / Maven ฉันพยายามจัดการกับสคริปต์บางอย่างที่จะทำให้การเปลี่ยนแปลง ตัวอย่างเช่น: #!/bin/sh export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH export GRAILS_HOME=/cygdrive/c/dev/grails-1.0.3 export PATH=$GRAILS_HOME/bin:$PATH export MAVEN_HOME=/cygdrive/c/dev/apache-maven-2.0.11 export PATH=$MAVEN_HOME/bin:$PATH which java which grails which mvn เมื่อสิ่งนี้ดำเนินการมันจะเปลี่ยน PATH ภายในบริบทของสคริปต์ แต่จากนั้นสคริปต์จะสิ้นสุดและไม่มีการเปลี่ยนแปลงใด ๆ ฉันจะรันสคริปต์เพื่อเปลี่ยน PATH ในเชลล์ที่ฉันใช้งานอยู่ได้อย่างไร ฉันใช้ Cygwin

2
$ PWD คืออะไร (เทียบกับไดเรกทอรีการทำงานปัจจุบัน)
ดังนั้น Wikipedia ( ลิงค์ ) จึงบอกฉันว่าคำสั่งpwdนั้นสั้นสำหรับ "print working directory" และนั่นสมเหตุสมผล แต่สำหรับตัวแปรสภาพแวดล้อม "P" จะต้องเป็นตัวย่อสำหรับอย่างอื่นที่ไม่ใช่การพิมพ์ ฉันได้ยินคนพูดถึง "ไดเรกทอรีการทำงานปัจจุบัน" ซึ่งฟังดูดีกว่าและใช้งานง่ายกว่า แต่ยังคงสภาพแวดล้อมของตัวแปรที่เรียกว่า $ PWD ไม่ใช่ $ CWD ไม่มีใครเคยพูดว่า "คุณตรวจสอบตัวแปรไดเรกทอรีงานพิมพ์หรือไม่" ฉันกำลังเล่นกับเว็บเซิร์ฟเวอร์แอปพลิเคชัน uWSGI และเมื่อเรียกใช้มันจะบอกฉัน (บนหน้าสถิติ uWSGI): "cwd":"/home/velle/greendrinks", เพื่อให้พวกเขาอย่างเห็นได้ชัดเช่น (ตัวย่อที่ใช้งานง่ายมากขึ้น) มากกว่าcwdpwd ฉันเดาว่าฉันกำลังพยายามคิดออกว่าฉันเข้าใจผิดบางอย่างหรือหากเป็นเพียงเรื่องของการให้ชื่อตัวแปรสภาพแวดล้อมเป็นชื่อที่ไม่ได้ใช้งานง่าย

2
ตัวแปรสภาพแวดล้อม TERM จะเริ่มต้นที่ใด
เมื่อเปิดหน้าต่าง terminal กับจำลอง GNOME xtermร์มินัลในเดสก์ท็กุยเปลือกสภาพแวดล้อมการลงทุนค่าเริ่มต้นของตัวแปรค่า หากฉันใช้CTL+ ALT+ F1เพื่อสลับไปยังหน้าต่างคอนโซล TTY และค่าที่มีการตั้งค่าecho $TERMlinux แรงจูงใจในการถามของฉันคือภายใน~/.bashrcตัวแปรของฉันมีการใช้ตัวแปรเพื่อพิจารณาว่ามีการจัดให้มีเปลือกสีหรือขาวดำแบบเก่าที่ดี # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac ในทั้งคอนโซลเชลล์และเชลล์จำลองของ Gnome Terminal หากฉันพิมพ์ export TERM=xterm-color source /.bashrc กระสุนทั้งสองเปลี่ยนเป็นโหมดสี (สิ่งที่ฉันต้องการให้เกิดขึ้นเสมอในทั้งสอง) TERMกรุณาตั้งค่าเริ่มต้นไว้ที่ไหนและที่ไหนดีที่สุดในการเปลี่ยนค่าเริ่มต้นหากเป็นไปได้? ดูเหมือนจะไม่มีอะไรใน GUI ตัวจำลองเทอร์มินัลเพื่อเลือกหรือตั้งค่า TERM เริ่มต้น ฉันได้พิจารณาเพียงแค่เพิ่มบรรทัดexport TERM=xterm-colorลงที่ด้านบนของ~/.bashrcไฟล์ของฉันแต่สัญชาตญาณของฉันบอกว่านี่ไม่ใช่ทางออกที่ดีที่สุดและการค้นหา Google ของฉันยังไม่ได้นำฉันไปสู่คำตอบที่ดี …

5
LD_LIBRARY_PATH อยู่ที่ไหน ฉันจะตั้งค่าตัวแปร LD_LIBRARY_PATH env ได้อย่างไร
ฉันกำลังพยายามสร้างโปรแกรม c ++ โดยใช้ Unix ฉันได้รับข้อผิดพลาด Linking CXX executable ../../bin/ME /usr/bin/ld: cannot find -lboost_regex-mt ฉันได้ยินมาว่าฉันแค่ต้องตั้งค่าตำแหน่งของ libboost * ในตัวแปร env LD_LIBRARY_PATH ของฉันแล้วเรียกใช้ make ตามที่ฉันได้ทำไว้โดยพิมพ์ -L /usr/lib64 -l boost_regex-mt หรือ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64 แต่ LD_LIBRARY_PATH อยู่ที่ไหน ฉันจะตั้งค่าตัวแปร LD_LIBRARY_PATH env ได้อย่างไร

5
Makefile มีไฟล์ env
ฉันกำลังพยายามรวม env vars ไว้ใน Makefile ไฟล์ env ดูเหมือนว่า: FOO=bar BAZ=quux โปรดทราบว่าไม่มีการนำexportไปสู่แต่ละ env var หากฉันเพิ่มไฟล์นำหน้าexportและเป็นเพียงincludeไฟล์ env ใน Makefile ทุกอย่างทำงานได้ตามที่ควรจะเป็น แต่ผมจำเป็นต้องให้การ env vars exportซันส์ชั้นนำ ที่ป้องกันไม่ให้ฉันเพียงแค่ใช้include envfileใน Makefile ฉันได้ลองทำบางสิ่งเช่นนี้: sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env include $(BUILDDIR)/env แต่การทำเช่นนั้นทำให้เกิดข้อผิดพลาดเนื่องจากไฟล์ env ไม่ได้มีไว้สำหรับรวมถึง

2
ใน zsh ฉันจะแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดได้อย่างไร?
ฉันต้องการรับรายการตัวแปรสภาพแวดล้อมทั้งหมด (ตัวแปร shell? ตัวแปรที่ส่งออก?) และค่าของมันตามเวลาที่กำหนดในหน่วย zsh วิธีที่เหมาะสมในการทำเช่นนี้คืออะไร?

5
รูปแบบ 'ถูกต้อง' สำหรับตัวแปรสภาพแวดล้อม HTTP_PROXY คืออะไร แคปหรือไม่มีแคป?
ฉันได้พบทั้งสองและhttp_proxy HTTP_PROXYทั้งสองรูปแบบเทียบเท่ากันไหม หนึ่งในนั้นมีความสำคัญมากกว่าคนอื่น ๆ ?

2
จะรีเซ็ตสภาพแวดล้อมของเชลล์ได้อย่างไร?
ปัญหานี้บักฉันมาระยะหนึ่งแล้วและถึงแม้ว่าฉันคิดว่าฉันพบคำตอบของฉันผ่านEnvWatcherแต่น่าเสียดายที่มันใช้ได้กับ Bash เท่านั้น และฉันใช้ zsh ฉันต้องการจำลองสิ่งที่ env-watcher ทำในระดับที่น้อยกว่านี้ แต่ฉันต้องรู้ว่ามีคำสั่งที่ฉันสามารถรีเซ็ตเชลล์ให้อยู่ในระดับเริ่มต้นที่สะอาดหรือไม่ ตัวอย่างเช่นฉันต้องการมีเวิร์กโฟลว์ต่อไปนี้ source some-functions alias another-thing export SVN_EDITOR=vim RESET-ZSH # none of the above are valid any more มีความเป็นไปได้ในตัวเช่นนี้หรือฉันกำลังไล่ล่าผีเสื้อ?


8
ฉันจะระบุตัวแปรสภาพแวดล้อมของกระบวนการอื่นได้อย่างไร
ถ้าฉันตรวจสอบ/proc/1/environฉันจะเห็นสตริง1สภาพแวดล้อมของกระบวนการของสตริงที่คั่นด้วย null ฉันต้องการนำตัวแปรเหล่านี้เข้าสู่สภาพแวดล้อมปัจจุบันของฉัน มีวิธีง่ายๆในการทำเช่นนี้หรือไม่? หน้าคนให้ฉันข้อมูลโค้ดซึ่งจะช่วยให้การพิมพ์จะออกแต่ละตัวแปรสภาพแวดล้อมบนพื้นฐานบรรทัดโดยบรรทัดproc (cat /proc/1/environ; echo) | tr '\000' '\n'สิ่งนี้ช่วยฉันในการตรวจสอบเนื้อหาว่าถูกต้อง แต่สิ่งที่ฉันต้องทำจริงๆคือส่งตัวแปรเหล่านี้ไปยังเซสชัน bash ปัจจุบันของฉัน ฉันจะทำอย่างไร

6
ฉันจะรันสคริปต์ทันทีหลังจากเชื่อมต่อผ่าน SSH ได้อย่างไร
ฉันเริ่มถามคำถามนี้ แต่ตอบในขณะที่เปิด ฉันจะโพสต์คำถามนี้ติดตามด้วยโซลูชันของฉันและปล่อยให้เปิดเพื่อแก้ไขปัญหาอื่น ๆ ที่อาจเกิดขึ้น <backstory> ฉันเป็นผู้ใช้ tmux และเป็นกลุ่ม ฉันชอบเสียงเรียกเข้าจากระยะไกลเนื่องจากฉันไม่ต้องกังวลเกี่ยวกับเครื่องพัฒนา Ubuntu ที่เริ่มต้นเมื่อภาพยนตร์แฟลชทำให้ฉันตื่นตระหนกกับเคอร์เนล การเรียกใช้ tmux หมายความว่าไฟล์ที่เปิดอยู่กำลังรอฉันหลังจากฉันรีบูตและฉันสามารถดำเนินการต่อจากที่ที่ฉันไป ฉันมีปัญหากับการเรียกใช้กลุ่มในเซสชัน tmux เมื่อฉันเชื่อมต่อดังนี้: ssh example.com -t 'tmux attach' UTF-8 จะตัดการครอบตัดที่ไม่ครอบเมื่อทำการปอกเปลือกในปกติและเพียงแนบกับเซสชัน tmux ด้วยตนเอง </ backstory> ดังนั้นฉันจึงต้องการวิธีการเริ่มต้นใช้งานบางอย่างใหม่ในการเข้าสู่ระบบ ssh ซึ่งจะไม่ส่งผลกระทบต่อสิ่งอื่นใดที่ฉันได้กำหนดค่าไว้ใน.zshrc(หรือของคุณ.bashrcหากคุณยังใช้ bash) ที่อาจจำเป็นสำหรับสภาพแวดล้อมการพัฒนาของฉัน ปรากฏขึ้นเมื่อฉันทำงานในพื้นที่บนเครื่องที่กล่าวไว้เป็นครั้งคราว

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