Score:0

จะอ่านตัวแปรสภาพแวดล้อมที่ประกาศใน /etc/environment จาก bash ได้อย่างไร

ธง mx

ฉันจะทำอย่างไร อ่าน หรือเข้าไปที่ ข้าม ตัวแปรสภาพแวดล้อมด้านล่าง?

นิโคลัส@กอนดอร์:~$ 
นิโคลัส@กอนดอร์:~$ printenv | เส้นทาง grep
WINDOWPATH=2
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
นิโคลัส@กอนดอร์:~$ 
นิโคลัส@กอนดอร์:~$ printenv | เกรป ทราเวิร์ส
นิโคลัส@กอนดอร์:~$ 
nicholas@gondor:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"



TRAVERSE="/home/nicholas/some_directory"
นิโคลัส@กอนดอร์:~$ 

ฉันวิ่ง ที่มา ~/.bashrc โดยไม่มีผล ฉันคาดหวังว่าถ้าฉันรีบูตตัวแปรจะสามารถอ่านได้ แต่นั่นดูรุนแรงมาก

ดูสิ่งนี้ด้วย:

https://stackoverflow.com/q/39296472/4531180

Gunnar Hjalmarsson avatar
uz flag
คุณเข้าสู่ระบบใหม่หลังจากเพิ่มตัวแปร TRAVERSE ไปที่ `/etc/environment` หรือไม่
Nicholas Saunders avatar
mx flag
ไม่ ฉันพยายามหลีกเลี่ยงสิ่งนั้น ฉันวางแผนที่จะคลุกคลีกับ vars สักหน่อย นั่นเป็นวิธีเดียวที่ @GunnarHjalmarsson จะรีโหลดหรือรีเฟรช vars?
Gunnar Hjalmarsson avatar
uz flag
ฉันจะบอกว่ามันเป็นวิธีที่ "ถูกต้อง" แต่คุณสามารถทำ `source /etc/environment` ซึ่งจะอัปเดตกระบวนการทุบตีปัจจุบันด้วยการเปลี่ยนแปลงล่าสุดของคุณ ตัวแปรใหม่จะไม่ถูกเอ็กซ์ปอร์ตไปยังสภาพแวดล้อมด้วยวิธีนั้น แต่จะใช้ได้เฉพาะในรูปแบบตัวแปรเชลล์เท่านั้น
raj avatar
cn flag
raj
ตามคำนิยาม `/etc/environment` จะถูกอ่านเมื่อเข้าสู่ระบบ โดยกระบวนการเข้าสู่ระบบ ก่อนที่เชลล์หรือ GUI จะเริ่มทำงาน และในเวลานั้นเท่านั้น ดังนั้นการเข้าสู่ระบบใหม่จึงเป็นวิธีที่เหมาะสมในการใช้การเปลี่ยนแปลงในไฟล์นี้
muru avatar
us flag
ไวยากรณ์แบบเต็มของ `/etc/environment` แตกต่างจากของเชลล์สคริปต์อย่างมาก ดังนั้นแม้ว่าไฟล์เฉพาะของคุณอาจมาจากแหล่งที่มา แต่ไฟล์สภาพแวดล้อมที่ถูกต้องทั้งหมดอาจไม่ใช่
muru avatar
us flag
หากคุณต้องการมันสำหรับเชลล์ปัจจุบันของคุณ ทำไมไม่เพียงแค่ตั้งค่าและส่งออกตัวแปรด้วยตัวคุณเอง
Gunnar Hjalmarsson avatar
uz flag
@muru: บางทีคุณอาจผสมผสานกับไวยากรณ์ `~/.pam_environment`
Score:1
ธง cn

หากคุณใช้ bash shell

. /อื่นๆ/สิ่งแวดล้อม

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

ตัวอย่างเช่น:

$ แมว b.sh
TRAVERSE="อีกสิ่งหนึ่ง"
$ echo $TRAVERSE

$ ./b.sh
$ echo $TRAVERSE

$ . ./b.sh
$ echo $TRAVERSE
อีกสิ่งหนึ่ง
$ 
SEWTGIYWTKHNTDS avatar
cn flag
`source /etc/environment` ควรใช้งานได้
Nicholas Saunders avatar
mx flag
ใช่ `source /etc/environment` ใช้งานได้ ขอบคุณครับ ดึกไปหน่อย

โพสต์คำตอบ

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