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

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

4
เมื่อฉันใช้ ZSH ฉันจะตั้งค่า PATH ใน /etc/profile.d ได้อย่างไร
ฉันใช้zshเป็นเปลือกของฉันและฉันพยายามกำหนดค่าสภาพแวดล้อมของฉัน ฉันมักจะกำหนด$JAVA_HOMEตัวแปรของฉันโดยการสร้างไฟล์: /etc/profile.d/java.sh ด้วยเนื้อหาดังต่อไปนี้ export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH จากนั้นฉันออกจากระบบและกลับมาและมันใช้งานได้ แต่ด้วยเหตุผลบางอย่างPATHตัวแปรไม่ได้ถูกตั้งค่า มันรู้จักJAVA_HOMEแต่ไม่ใหม่PATHดูตัวอย่างข้อมูลเทอร์มินัล: ~ echo $JAVA_HOME /usr/lib/jvm/jdk1.8.0_05 ~ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games และฉันยืนยันโดยพยายามรันคำสั่งในรูปแบบ jvm ~ java -version zsh: command not found: java PATHไม่รวม$JAVA_HOMEเท่าที่ควร มีอะไรอีกบ้างที่ฉันควรตรวจสอบ? ฉันได้ตรวจสอบแล้วว่าถ้าฉันทำงาน: source /etc/profile.d/java.sh ทุกอย่างทำงานอย่างถูกต้องและตัวแปรของฉันได้รับการตั้งค่าตามที่ควร แต่สคริปต์ไม่ควร/etc/profile.dทำงานโดยอัตโนมัติหรือไม่

1
DEBIAN_FRONTEND ตัวแปรสภาพแวดล้อม
ผู้ให้บริการโฮสติ้งที่มีศักยภาพของฉันแนะนำให้เรียกใช้คำสั่งในเทอร์มินัลเพื่อทำให้อิมเมจระบบปฏิบัติการบนเซิร์ฟเวอร์ของ KVM มีขนาดเล็กที่สุด เนื่องจากเทมเพลต KVM ของพวกเขามาพร้อมกับแพ็คเกจที่ฉันไม่ต้องการฉันคิดว่าฉันอาจใช้คำสั่งเดียวกันนั้นเพื่อลบแพ็คเกจที่ไม่ต้องการ คำสั่งนั้นเริ่มต้นด้วยDEBIAN_FRONTEND=noninteractiveจากนั้นเรียกใช้apt-get removeดังนี้: DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" package-1 package-2 ... package-n; apt-get -y autoremove; apt-get clean all นี่เป็นครั้งแรกที่ฉันพบDEBIAN_FRONTENDตัวแปรสภาพแวดล้อมและฉันไม่สามารถหาข้อมูลที่เป็นประโยชน์ได้ ดังนั้นฉันจึงสงสัยว่าการตั้งค่าจะnoninteractiveทำอย่างไรและถ้ามีการแนะนำให้เลือกเพราะฉันคิดว่าค่า ( noninteractive) จะคงอยู่

1
ตัวแปรสภาวะแวดล้อมไม่สามารถเข้าถึงได้ในสคริปต์ทุบตี
ฉันพบปัญหาแปลก ๆ ฉันใส่ตัวแปร env ลงไป.bashrcและทำงานได้ตามที่ควร: echo $HADOOP_HOME /home/me/dist/hadoop แต่ตัวแปร env ไม่สามารถเข้าถึงได้เมื่อเรียกใช้งานสคริปต์ bash สมมติว่าฉันสร้าง/tmp/sample.shด้วยเนื้อหาด้านล่าง: #! /bin/bash echo $HADOOP_HOME เมื่อฉันเรียกใช้สคริปต์ข้างต้นก้องบรรทัดว่างเปล่า: /tmp/sample.sh ‌

1
จะระบุคำสั่ง Environment systemd ที่มี = ได้อย่างไร?
ฉันต้องการระบุEnvironment systemdคำสั่งที่มี=เช่น Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current และรับข้อผิดพลาด [/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/apache ในjournalctl -xe. ฉันพยายามที่จะพูดด้วย"และ'และจะหลบหนี=ด้วยการ\ไม่ประสบความสำเร็จ ดูเหมือนว่าจะไม่มีเอกสาร

6
การตั้งค่าเส้นทาง TeX Live สำหรับรูท
คำถามนี้ถูกย้ายจาก TeX - LaTeX Stack Exchange เพราะสามารถตอบได้ใน Ask Ubuntu อพยพ 8 ปีที่ผ่านมา ฉันติดตั้งวานิลลา TeX Live 2011และฉันมีปัญหาในการตั้งค่าเส้นทาง TeX Live สำหรับรูท (ใน Ubuntu 11.10) ปัญหาคือเมื่อฉันเรียกใช้sudo tlmgrฉันได้รับ: sudo: tlmgr: command not found ในการแก้ไขเส้นทางสำหรับผู้ที่ไม่ใช่รูทมันก็เพียงพอที่จะเพิ่ม PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH /etc/profileไปยัง ฉันได้ลองเพิ่มบรรทัดเดียวกันนี้ไป/root/.bashrcแล้วและฉันได้ลองเพิ่มเข้าไปใน/etc/profile.d/zzz-texlive.shแบบที่เฮอร์เบิร์ตแนะนำใน/tex/26624/tlmgr-inaccessible/26626#26626 แต่ก็ไม่ได้ช่วยอะไร

1
ฉันสามารถเข้าถึงตัวแปร US $ ที่มาจากภายในสคริปต์ที่รันด้วย `sudo 'ได้หรือไม่
คำถามแปลก ๆ ฉันรู้ นี่คือสคริปต์: echo $USER นี่คือคำสั่งที่ฉันใช้เรียกใช้: sudo ./myscript.sh ตอนนี้มันพิมพ์ "root" แต่ฉันต้องการให้พิมพ์jonชื่อผู้ใช้ของฉัน มีวิธีที่จะทำเช่นนั้นโดยการเปลี่ยนสคริปต์ไม่ใช่คำสั่งหรือไม่

3
ตัวแปรสภาพแวดล้อม PYTHONPATH
ฉันมีสิ่งนี้ใน~/.profile: export PYTHONPATH=/home/dev/python-files ในpython-filesไดเรกทอรีฉันมีโครงการไม่กี่โคลนจาก git-hub (กระติกน้ำโค้งและ py-vgdl) เมื่อใดก็ตามที่ฉันพยายามเริ่มตัวอย่างใด ๆ ในโครงการเหล่านี้ฉันได้รับข้อผิดพลาดคล้ายกับต่อไปนี้: $ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py Traceback (most recent call last): File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in <module> from vgdl.core import VGDLParser ImportError: No module named vgdl.core สำหรับฉันดูเหมือนว่าฉันไม่ควรได้รับข้อผิดพลาดนี้เนื่องจากฉันได้PYTHONPATHตั้งค่าตัวแปรสภาพแวดล้อมแล้วหรือยัง การใช้ล่ามแบบหลาม: >>> import os >>> os.environ["PYTHONPATH"] '/home/dev/python-files'

2
การอ้างอิงตัวแปรสภาพแวดล้อม * ใน * / etc / environment?
ฉันเพิ่งค้นพบ/etc/environmentซึ่งดูเหมือนจะเป็นวิธีมาตรฐานในการตั้งค่าตัวแปรสภาพแวดล้อมแบบง่ายกว่าสคริปต์ แต่ฉันสงสัยว่ามีวิธีการอ้างอิงตัวแปรสภาพแวดล้อมในไฟล์ / etc / environment หรือไม่ นั่นคือฉันมีสิ่งนี้: JAVA_HOME="/tools/java" GRAILS_HOME="/tools/grails" GROOVY_HOME="/tools/groovy" GRADLE_HOME="/tools/gradle" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" ถ้าฉันพยายามที่จะเพิ่ม$JAVA_HOME/binคำจำกัดความของเส้นทางฉันจะได้รับ $ JAVA_HOME / bin ไม่ใช่ตัวแปร interpolated เพื่อแก้ไขปัญหานี้ฉันกำลังสร้าง environment.sh ใน profile.d เพื่อเพิ่ม/binรายการในเส้นทาง แต่ดูเหมือนว่าจะเลอะเทอะและไม่เป็นระเบียบ มีวิธีการย้อนกลับของตัวแปรสภาพแวดล้อมใน / etc / environment หรือไม่?

4
เหตุใดจึงใช้การกระทำที่ไม่ปลอดภัย '-execdir' สำหรับไดเรกทอรีที่อยู่ใน PATH
ทำไมจึงไม่ปลอดภัยที่จะใช้การผสมผสานระหว่าง-execdirการกระทำของการค้นหาขณะใช้งาน-execอยู่ เมื่อฉันใช้คำสั่งด้านล่างฉันได้รับข้อความแจ้งต่อไปนี้: /path/to/currentDir/$ find . -type f -name 'partOfFileNames*' -execdir rm -- {} + find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading …

6
ฉันจะสร้างมันขึ้นมาเพื่อที่ฉันจะสามารถเรียกใช้โปรแกรมเฉพาะเพียงแค่พิมพ์ชื่อในคอนโซล?
ฉันเพิ่งติดตั้ง Light Table เมื่อเร็ว ๆ นี้ดาวน์โหลดจากที่เก็บ git และทำตามคำแนะนำบนเว็บไซต์นี้เพื่อสร้างตัวเรียกใช้เดสก์ท็อป ตอนนี้ฉันต้องการเรียกใช้โปรแกรมโดยการพิมพ์ในเทอร์มินัลโดยตรง LightTable และไม่ ./opt/LightTable/deploy/LightTable

3
การกำหนดค่า Firefox เพื่อใช้พร็อกซีจากบรรทัดคำสั่ง
ฉันกำลังมองหาวิธีบอก Firefox ให้ใช้พร็อกซีใน Ubuntu Ludid (10.04.1 LTS) ฉันกำลังติดตั้ง Ubuntu กึ่งอัตโนมัติในเครื่องที่เหมือนกันหลายเครื่อง สำหรับสิ่งนี้ฉันใช้สคริปต์ที่ตั้งค่าพร็อกซีทั้งระบบ: echo "export http_proxy=http://myproxy:3128/" > /etc/profile.d/proxy.sh echo "export HTTP_PROXY=http://myproxy:3128/" >> /etc/profile.d/proxy.sh chmod a+x /etc/profile.d/proxy.sh ฉันสามารถยืนยันได้ว่าตัวแปรถูกตั้งค่าอย่างถูกต้องเมื่อตรวจสอบในเชลล์ โปรแกรมส่วนใหญ่เคารพการตั้งค่านี้และใช้พรอกซีของฉัน Firefox อย่างไรก็ตามไม่ เมื่อฉันเปิดกล่องโต้ตอบการตั้งค่าการเชื่อมต่อเครือข่ายจะมีการตั้งค่าไว้ล่วงหน้าเป็น "ใช้การตั้งค่าระบบ" สำหรับพร็อกซี Firefox คาดหวังอะไรที่นี่? ตัวแปรที่มีชื่อแตกต่างกันอย่างไร ฉันสามารถตั้งค่าบางอย่างใน prefs.js ของ FF ได้ไหม

2
ทำไม apache2 ไม่เคารพไฟล์ envvars ของฉัน
ไฟล์ envvar ของฉันมีบรรทัดเหล่านี้อยู่: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data apache2.conf ของฉันมีบรรทัดเหล่านี้อยู่: # These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} แต่เมื่อฉันเรียกใช้apache2 -Mฉันได้รับสิ่งนี้: apache2: bad user name ${APACHE_RUN_USER} การแก้ไขชั่วคราวคือการใส่รหัสwww-dataลงในไฟล์ apache2.conf ของฉัน มีการเก็งกำไรบางอย่างที่นี่เป็นเพราะสคริปต์การกำหนดค่าบางอย่างไม่ได้แทนที่ env vars อย่างถูกต้องในไฟล์ apache2.conf ของฉัน ไม่ว่าฉันจะรับ apache2 เพื่อศึกษาไฟล์ envvars ของฉันได้อย่างไร ในฐานะที่เป็นจุดข้อมูลอื่นไซต์นี้ดูเหมือนว่าบ่งชี้ envvars ถูกสร้างขึ้นที่ build แต่อ่านโดย apache2ctl ที่รันไทม์บอกว่าไฟล์นี้ไม่ได้เป็นเพียงเซ่อเหลือโดยกระบวนการสร้าง

4
การตั้งค่าตัวแปรสภาพแวดล้อมส่วนกลางสำหรับทุกคน
ถ้าผมตั้งค่าตัวแปรในก็ดูเหมือนว่าจะนำไปใช้กับผู้บริหารในขณะที่/etc/environmentsudo su ฉันจะทำให้ตัวแปรใช้กับทุกคนได้อย่างไร โดยเฉพาะอย่างยิ่งเมื่อพวกเขาอยู่ใน terminal? การตั้งค่า/etc/enviromentไม่เหมาะกับการทุบตีหรือไม่?

1
มีตัวแปรไดเรกทอรีก่อนหน้าหรือไม่?
ตัวแปรสภาวะแวดล้อม$PWDมีไดเร็กทอรีการทำงานปัจจุบัน มีตัวแปรที่มีไดเรกทอรีก่อนหน้าหรือไม่? หากไม่มีจะสร้างได้อย่างไร ฉันคิดว่านี่อาจเป็นประโยชน์

3
วิธีตั้งค่าตัวแปร CLASSPATH สำหรับโฟลเดอร์ใน Ubuntu
ฉันรู้ว่าexport CLASSPATH=/usr/local/java/tools.jar:$CLASSPATHจะเพิ่ม tools.jar ไปยัง CLASSPATH แต่ฉันต้องการตั้งค่าโฟลเดอร์เป็น CLASSPATH แบบนี้ export CLASSPATH=/usr/local/java/lib/:$CLASSPATH แต่มันไม่ทำงาน

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