ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมสำหรับเซสชัน GNOME ได้อย่างไร


15

ในระบบของฉันสำหรับแอพที่ใช้ SDL ฉันต้องตั้งค่าตัวแปรสภาพแวดล้อม:

export SDL_AUDIODRIVER=alsa

เพื่อให้เสียงทำงานอย่างถูกต้อง ฉันจะตั้งค่าเซสชัน GNOME ของฉันอย่างไรเพื่อให้ตัวแปรนี้มีอยู่ในทุกแอปพลิเคชัน (ดังนั้นถ้าฉันเรียกใช้แอปพลิเคชันผ่าน Nautilus หรือใช้DBGLแอปทำงานอย่างถูกต้อง)

แก้ไข:

ไฟล์การกำหนดค่าที่ฉันได้ตั้งค่า (และรีเซ็ตเครื่องหลังจากแต่ละ) จะไม่มีประโยชน์:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- ใช้งานได้ในกรณีทั่วไป แต่ไม่ใช่เมื่อ distro ของคุณตั้งค่าตัวแปรไว้ที่อื่น
  • /etc/profile

คุณแน่ใจหรือไม่ว่านี่เป็นตัวแปรสภาพแวดล้อม ดูเหมือนว่ามันอาจเป็นการตั้งค่าแบบอื่น คุณขุดในแอปเพล็ตการตั้งค่าระบบเสียงหรือไม่?
codeLes

มันไม่แน่นอน นี่คือวิธีที่ SDL ระบุสิ่งที่แบ็กเอนด์ที่จะใช้ ฉันหวังว่ามันจะใช้ไฟล์กำหนดค่า แต่ SDL ค่อนข้างสอดคล้องกันในการใช้ตัวแปรสภาพแวดล้อมเพื่อกำหนดพฤติกรรม
เบอร์นาร์ด

คุณเคยเห็นสิ่งนี้ไหม
codeLes

1
ใช่มันเป็นทางเลือกระหว่างการคอมไพล์ SDL ใหม่หรือการตั้งค่าตัวแปรสภาพแวดล้อม ฉันคิดว่าฉันเลือกถูกแล้ว : p ใช้งานได้ (เช่นในเชลล์ใช้งานได้) เป็นเพียงปัญหาที่ยุ่งยากในการทำให้ GNOME เผยแพร่ตัวแปรสำหรับแอปที่ไม่ได้เริ่มต้นจากเชลล์ที่เป็นปัญหา ขอบคุณสำหรับความช่วยเหลืออย่างต่อเนื่อง
เบอร์นาร์ด

สิ่งนี้เป็น distro หรือไม่! (ฉันยอมรับว่าการกำหนดค่าสำหรับ gdm นั้นยากที่จะติดตามดังนั้นความคิดแรกของฉัน "เพียงแค่ดูใน / etc / gdm / และอ่านสคริปต์" เป็นเรื่องที่เจ็บปวดมาก) ที่นี่ดูเหมือนว่าโปรไฟล์จะทำงานได้ดี (debian / testing)
Anders Eurenius

คำตอบ:


6

อาจเป็นไปได้ว่าตัวแปร SDL_AUDIODRIVER กำลังถูกยกเลิกการตั้งค่าบางที่ กลยุทธ์หนึ่งที่ฉันใช้สำหรับปัญหาเกี่ยวกับสิ่งต่าง ๆ ที่เกี่ยวข้องกับสคริปต์เริ่มต้นคือการใส่คำสั่ง debug echo ที่ง่ายต่อการเปิดใช้งาน / ปิดใช้งานโดยการสร้าง / ลบไฟล์ คุณสามารถเริ่มต้นด้วยการเพิ่ม

debug_msg() {
        test -f $HOME/.debug && echo "$@" 1>&2
}

debug_msg "running ~/.bashrc ($0), SDL_AUDIODRIVER = '$SDL_AUDIODRIVER'"

เป็น. bashrc, .bash_profile, .profile และ / etc / profile เพื่อดูว่ามีค่าใดและหาก / ที่ไหนที่มีการเปลี่ยนแปลง


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

6

https://help.ubuntu.com/community/EnvironmentVariablesพูดถึงสถานที่สี่แห่งที่เราสามารถตั้งค่าตัวแปรสภาพแวดล้อมได้:

  • ~/.pam_environment- […] ไม่ใช่ไฟล์สคริปต์ แต่ประกอบด้วยนิพจน์การมอบหมายหนึ่งรายการต่อบรรทัด […] ต้องมีการลงชื่อเข้าใช้อีกครั้งเพื่อเริ่มต้นตัวแปร [ ... ]
  • ~/.profile - นี่อาจเป็นไฟล์ที่ดีที่สุดสำหรับการวางการกำหนดค่าตัวแปรสภาพแวดล้อมเนื่องจากมันได้รับการดำเนินการโดยอัตโนมัติโดย DisplayManager ในระหว่างการเริ่มต้นกระบวนการเดสก์ท็อปเซสชั่นเช่นเดียวกับโดยเปลือกเข้าสู่ระบบเมื่อหนึ่งเข้าสู่ระบบจากคอนโซลต้นฉบับ
  • ~/.bash_profileหรือ~/.bash_login- หากมีไฟล์ใดไฟล์หนึ่งอยู่ bash จะเรียกใช้งานมันมากกว่า "~ / .profile" เมื่อมันเริ่มเป็นเชลล์เข้าสู่ระบบ (Bash จะชอบ "~ / .bash_profile" ถึง "~ / .bash_login") อย่างไรก็ตามไฟล์เหล่านี้จะไม่มีผลกับเซสชันกราฟิกโดยค่าเริ่มต้น
  • ~/.bashrc- เนื่องจากวิธีที่ Ubuntu ตั้งค่าไฟล์สคริปต์ต่าง ๆ ตามค่าเริ่มต้นนี่อาจเป็นสถานที่ที่ง่ายที่สุดในการตั้งค่าตัวแปรการกำหนดค่าเริ่มต้นเกือบจะรับประกันได้ว่าไฟล์นี้จะถูกเรียกใช้งานในแต่ละการเรียกใช้ bash และทุกครั้ง ในสภาพแวดล้อมแบบกราฟิก อย่างไรก็ตามประสิทธิภาพที่ชาญฉลาดนี่อาจไม่ใช่สิ่งที่ดีที่สุดที่จะทำเพราะจะทำให้ค่าถูกตั้งค่าโดยไม่จำเป็นหลายครั้งโดยไม่จำเป็น

http://userbase.kde.org/Session_Environment_Variables/enแนะนำสถานที่นี้สำหรับ KDE:

KDE จะเรียกใช้งานสคริปต์ใด ๆ ที่พบใน$HOME/.kde/envชื่อไฟล์ซึ่งลงท้าย.shด้วยและจะรักษาตัวแปรสภาพแวดล้อมทั้งหมดที่พวกเขาตั้งไว้ สิ่งสำคัญคือต้องส่งออกตัวแปรใด ๆ ที่คุณต้องการตั้งค่า

https://help.ubuntu.com/community/ComposeKey#XIMแสดงให้เห็นการปรับเปลี่ยนหรือ~/.gnomerc~/.Xsession


1

สร้าง.gnomercไฟล์ใน $ HOME ซึ่งเป็นเชลล์สคริปต์ ( เหมือน.bashrc ) ซึ่งตั้งค่าตัวแปรทั้งหมดที่คุณต้องการ


นี่มันใช้งานไม่ได้สำหรับฉัน
เบอร์นาร์ด

คุณลองเปิด gnome-terminal แล้วและยืนยันว่ามันไม่แสดงเป็น env หรือไม่?
Mike McQuaid

1
@ ไมค์: มันอยู่ใน. bashrc ของฉันดังนั้นมันจะปรากฏขึ้น แต่มันจะไม่ถูกต้อง emacs และM-x getenvยืนยันว่าไม่ได้ถูกแทนที่สำหรับแอพ GUI
เบอร์นาร์ด

0

คุณได้ลองสร้างตัวแปรสภาวะแวดล้อม int .profileหรือ/ etc / profile แล้วหรือยัง?

ที่ควรจะทำงานและควรมีอยู่แล้ว ซึ่งแตกต่างจาก. bashrcซึ่งต่อเซสชันเทอร์มินัลสิ่งเหล่านี้เริ่มต้นเมื่อล็อกอินเข้าสู่เซสชันของคุณ


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