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

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

3
อะไรคือความแตกต่างระหว่าง ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc …?
คำตอบสำหรับคำถามเกี่ยวกับSOและaskubuntuพร้อมกับ poking through (และส่วนหัวอ่านของ) $HOMEและ/etc/ระบุจำนวนไฟล์ที่สามารถใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมรวมถึง: ~/.profile ~/.bashrc ~/.bash_profile ~/.gnomerc ~/.Rprofile /etc/bash_bashrc /etc/profile /etc/screenrc ฉันรวบรวมไฟล์ที่ใช้/etc/งานได้สำหรับผู้ใช้ทุกคนในขณะที่ไฟล์$HOMEนั้นเป็นไฟล์เฉพาะของผู้ใช้ ฉันยังรวบรวมที่.profileโหลดเมื่อเข้าสู่ระบบในขณะที่.bashrcโหลดเมื่อ/bin/bashถูกดำเนินการ ฉันยังเข้าใจว่าโปรแกรมต่าง ๆ มีไฟล์การตั้งค่าที่แตกต่างกัน (เช่น.Rprofileสำหรับ R) แต่ฉันขอขอบคุณการชี้แจงบางอย่าง: มี*rcและ*profileไฟล์ที่แตกต่างกัน? ขอบเขตของไฟล์ดังกล่าวคืออะไร (เช่นไฟล์ใดที่มักใช้กับ Linux) มีลำดับชั้น (เช่น.bashrcเขียนทับชุดตัวแปร.settings) การอ้างอิงที่ดีสำหรับไฟล์ประเภทนี้คืออะไร? สำหรับตัวเลือกในไฟล์เหล่านี้? คำถามที่เชื่อมโยง "วิธีเข้าถึงตัวแปรสภาวะแวดล้อม bash จากภายใน R ใน emacs-ess" "ความแตกต่างระหว่างการเปิดใช้แอปพลิเคชันจากแป้นพิมพ์ลัดกับเทอร์มินัลหรือไม่"

6
ความแตกต่างระหว่าง 'env' และ 'printenv' คืออะไร
ความแตกต่างระหว่างสองคำสั่งenvและprintenvคืออะไร? _พวกเขาทั้งสองแสดงตัวแปรสภาพแวดล้อมและการส่งออกจะตรงเดียวกันนอกเหนือจาก มีเหตุผลทางประวัติศาสตร์หรือไม่ที่มีสองคำสั่งแทนที่จะเป็นหนึ่งคำสั่ง?

3
ฉันจะเปลี่ยนเท็กซ์เอดิเตอร์เริ่มต้นใน Debian (บีบ) distro ได้อย่างไร
"บรรณาธิการของโจ" ไม่ได้เกิดขึ้นกับฉันตามธรรมชาติ ฉันจะเปลี่ยนเป็นการใช้นาโนหรือเป็นกลุ่มได้อย่างไร ฉันได้ลองแล้ว export EDITOR=nano แต่ดูเหมือนจะไม่ได้รับความเคารพ ฉันต้องการที่visudoจะเคารพสิ่งนี้เช่นกัน

3
/ usr / bin / env รู้ได้อย่างไรว่าจะใช้โปรแกรมใด
เมื่อฉันใช้ shebang #!/usr/bin/env pythonเพื่อเรียกใช้สคริปต์ระบบจะทราบได้อย่างไรว่าpythonควรใช้อย่างไร ถ้าฉันค้นหาpythonเส้นทางถังในตัวแปรสภาพแวดล้อมฉันไม่พบอะไรเลย env | grep -i python

3
รีเฟรชตัวแปร env หลังจากแก้ไขไฟล์ bashrc
ฉันแก้ไข.bashrcไฟล์เพื่อส่งออกตัวแปรสภาพแวดล้อมใหม่บ่อยครั้ง แทนที่จะปิดคอนโซลและเริ่มใหม่เพื่อรีเฟรชตัวแปร env มีวิธีที่สะดวกในการรีเฟรชหรือไม่?

9
วิธีพิมพ์ตัวแปรที่กำหนดไว้เฉพาะ (เชลล์และ / หรือตัวแปรสภาพแวดล้อม) ใน bash
คำสั่ง bash builtin setหากเรียกใช้โดยไม่มีอาร์กิวเมนต์จะพิมพ์ตัวแปรเชลล์และสภาวะแวดล้อมทั้งหมด แต่รวมถึงฟังก์ชันที่กำหนดไว้ทั้งหมด grepนี้จะทำให้การส่งออกใช้ไม่ได้สำหรับมนุษย์และยากที่จะ ฉันจะทำให้คำสั่ง bash builtin setพิมพ์เฉพาะตัวแปรและไม่ใช่ฟังก์ชันได้อย่างไร มีคำสั่งอื่นที่พิมพ์เฉพาะตัวแปรเชลล์โดยไม่มีฟังก์ชั่นหรือไม่? หมายเหตุ: ทุบตีแตกต่างระหว่างตัวแปรเชลล์และตัวแปรสภาพแวดล้อม ดูที่นี่ความแตกต่างระหว่างตัวแปรสภาพแวดล้อมและตัวแปรสภาพแวดล้อมที่ส่งออกใน bash

2
sudo เป็นผู้ใช้รายอื่นที่มีสภาพแวดล้อม
$ whoami admin $ sudo -S -u otheruser whoami otheruser $ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME' /home/admin เหตุใดจึงไม่$HOMEถูกตั้งค่าเป็น/home/otheruserแม้ว่า bash จะถูกเรียกใช้เป็นเชลล์การเข้าสู่ระบบ โดยเฉพาะ/home/otheruser/.bashrcไม่ได้มีที่มา นอกจากนี้ยัง/home/otheruser/.profileไม่ได้รับที่มา - ( /home/otheruser/.bash_profileไม่มีอยู่) แก้ไข: ปัญหาจริงคือhttps://stackoverflow.com/questions/27738224/mkvirtualenv-with-fabric-as-another-user-fails

3
ฉันจะทำให้ตัวแปรสภาพแวดล้อม“ ส่งออก” ใน shell script ติดรอบได้อย่างไร
ฉันมีบัญชี Amazon EC2 หลายบัญชีและต้องการเปลี่ยนตัวแปรอย่างรวดเร็วเช่นการ$EC2_HOMEใช้สคริปต์ ฉันได้ตั้งค่าสคริปต์เชลล์เช่นนี้: #!/bin/sh export EC2_HOME=/home/me/.ec2 echo $EC2_HOME เมื่อฉันเรียกใช้สคริปต์ฉันรู้ว่าEC2_HOMEมีการตั้งค่า แต่ฉันคิดว่าการใช้exportจะทำให้ตัวแปรติดรอบหลังจากสคริปต์เสร็จสมบูรณ์ มันไม่ได้ทำงานเหมือนecho $EC_HOMEไม่แสดงอะไรเลย ฉันรู้ว่านี่ต้องเป็นความรู้พื้นฐานเกี่ยวกับการเขียนสคริปต์ Linux แต่ฉันไม่รู้ ฉันพยายามหาคำถามที่เกี่ยวข้องโดยไม่มีโชค - ดังนั้นฉันจึงขอโทษถ้ามันซ้ำกัน

4
ฉันจะเริ่มต้นเซสชันเชลล์ทั้งหมดในไดเรกทอรีอื่นที่ไม่ใช่ $ HOME ได้อย่างไร
เมื่อฉันเปิดเชลล์ที่ไม่ใช่การเข้าสู่ระบบใน Ubuntu ไดเรกทอรีการทำงานปัจจุบันของฉันคือ/home/user_name( $HOMEตัวแปรสภาพแวดล้อมของฉัน) แต่ฉันต้องการเปลี่ยนสิ่งนี้เมื่อฉันเริ่มเทอร์มินัลของฉันฉันอยู่ในไดเรกทอรีอื่น ฉันได้อ่านแล้วว่าเมื่อฉันเริ่มต้นเทอร์มินัลในอูบุนตูมี.bashrcไฟล์ที่มา ดังนั้นฉันเพิ่ม export HOME=/home/user_name/Documents ไปยัง.bashrcไฟล์ของฉัน ตอนนี้เมื่อฉันเปิดเครื่องฉันยังอยู่ใน/home/user_nameไดเรกทอรี ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร

2
การแทนที่ตัวแปรเฉพาะด้วย envsubst
ฉันพยายามเปลี่ยนตัวแปรสภาพแวดล้อมผ่านenvsubstแต่ฉันต้องการแทนที่ตัวแปรเฉพาะเท่านั้น จากเอกสารฉันควรบอกenvsubstให้เปลี่ยนเฉพาะตัวแปรบางตัวเท่านั้น แต่ฉันไม่สามารถทำเช่นนั้นได้ ตัวอย่างเช่นถ้าฉันมีไฟล์ที่มี: VAR_1=${VAR_1} VAR_2=${VAR_2} ฉันจะดำเนินการอย่างไรenvsubstเพื่อที่จะแทนที่การอ้างอิงถึง${VAR_1}เท่านั้น

3
วิธีการทำให้บริการยูนิกซ์เห็นตัวแปรสภาพแวดล้อม?
ฉันได้ตั้งค่าตัวแปรสภาพแวดล้อมของฉันโดยใช้/etc/profile: export VAR=/home/userhome ถ้าอย่างนั้นฉันecho $VARก็แสดงให้เห็น/home/userhome แต่เมื่อฉันใส่การอ้างอิงตัวแปรนี้ลงใน/etc/init.d/servicenameไฟล์มันไม่สามารถหาตัวแปรนี้ เมื่อฉันเรียกservice servicename statusใช้/etc/init.d/servicenameไฟล์ที่มีเนื้อหาดังต่อไปนี้: case "$1" in status) cd $VAR/dir ;; esac มันบอกว่า /dir: No such file or directory แต่มันใช้งานได้ถ้าฉันวิ่ง/etc/init.d/servicename statusแทนservice servicename status ฉันจะทำให้ยูนิกซ์เห็นตัวแปรสภาพแวดล้อมได้อย่างไร?

3
ใช้การส่งออกใน. bashrc
ฉันสังเกตเห็น.bashrcว่ามีบางบรรทัดexportอยู่ข้างหน้าพวกเขาเช่น export HISTTIMEFORMAT="%b-%d %H:%M " ... export MYSQL_HISTFILE="/root/.mysql_history" ในขณะที่คนอื่นไม่เช่น HISTSIZE=100000 ผมสงสัยว่าถ้าครั้งแรกนี้ถูกต้องและสองสิ่งที่เป็นกฎสำหรับการใช้ในexport.bashrc

8
สคริปต์เพื่อเปลี่ยนไดเรกทอรีปัจจุบัน (cd, pwd)
ฉันต้องการเรียกใช้สคริปต์เพื่อเปลี่ยนไดเรกทอรีการทำงานปัจจุบัน: #!/bin/bash cd web/www/project แต่หลังจากที่ฉันเรียกใช้แล้ว pwd ปัจจุบันยังคงไม่เปลี่ยนแปลง! ฉันจะทำสิ่งนั้นได้อย่างไร

4
แสดงเส้นทางในแบบที่มนุษย์อ่านได้
ฉันต้องการแสดงตัวแปรสภาพแวดล้อม PATH ในแบบที่มนุษย์อ่านได้มากขึ้น $ echo $PATH /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin ฉันกำลังคิดในบางสิ่งเช่นนี้: $ echo $PATH | some cut and awk magic /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin ...

4
วิธีอ่านตัวแปรสภาวะแวดล้อมของกระบวนการ
ลินุกซ์/proc/<pid>/environไม่อัปเดต (ตามที่ฉันเข้าใจว่าไฟล์มีสภาพแวดล้อมเริ่มต้นของกระบวนการ) ฉันจะอ่านสภาพแวดล้อมปัจจุบันของกระบวนการได้อย่างไร

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