Bagaimana cara menetapkan variabel lingkungan untuk sesi GNOME?

15

Di sistem saya, untuk aplikasi yang menggunakan SDL, saya perlu mengatur variabel lingkungan:

export SDL_AUDIODRIVER=alsa

untuk membuat suara bekerja dengan baik. Bagaimana cara mengatur sesi GNOME saya sehingga variabel ini hadir untuk semua aplikasi (jadi jika saya menjalankan aplikasi melalui Nautilus, atau menggunakan DBGL , aplikasi berfungsi dengan baik)?

EDIT:

File konfigurasi yang saya atur (dan setel ulang mesin saya setelah masing-masing) tidak berhasil:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Ini berfungsi dalam kasus umum, tetapi tidak ketika distro Anda mengatur variabel di tempat lain.
  • /etc/profile
Bernard
sumber
Apakah Anda yakin ini perlu variabel lingkungan? Sepertinya itu mungkin semacam pengaturan lain. Sudahkah Anda menggali applet pengaturan suara sistem?
codeLes
Memang benar. Beginilah cara SDL mengetahui backend yang digunakan. Saya berharap itu hanya menggunakan file konfigurasi, tetapi SDL cukup konsisten dalam penggunaan variabel lingkungan untuk menentukan perilaku.
Bernard
Pernahkah
codeLes
1
Ya, itu pilihan antara mengkompilasi ulang SDL atau mengatur variabel lingkungan. Saya pikir saya membuat pilihan yang tepat. : p Ini berfungsi (yaitu, di shell, berfungsi) itu hanya masalah pelik untuk mendapatkan GNOME untuk menyebarkan variabel untuk aplikasi yang tidak dimulai dari shell yang menjadi masalah. Terima kasih atas bantuan Anda yang berkelanjutan.
Bernard
Distro apa ini ?! (Saya setuju bahwa konfigurasi untuk gdm benar-benar sulit untuk diikuti, jadi pikiran pertama saya, "lihat saja di / etc / gdm / dan baca skripnya" sangat menyakitkan.) Di sini, profil sepertinya bekerja dengan baik. (debian / pengujian)
Anders Eurenius

Jawaban:

6

Bisa jadi variabel SDL_AUDIODRIVER sedang tidak disetel di suatu tempat. Salah satu strategi yang saya gunakan untuk masalah dengan hal-hal yang berkaitan dengan skrip startup adalah dengan memasukkan pernyataan gema debug yang mudah diaktifkan / dinonaktifkan dengan membuat / menghapus file. Anda bisa mulai dengan menambahkan

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

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

ke .bashrc, .bash_profile, .profile dan / etc / profile untuk melihat nilai apa yang dimilikinya dan jika / di mana ia berubah.

hlovdal
sumber
Mmm, itu juga pemikiran saya saat ini. Ini diatur ke 'pulsa', dan itu harus diatur di suatu tempat oleh OpenSUSE. Saya akan melakukan beberapa pekerjaan detektif ketika saya pulang.
Bernard
6

https://help.ubuntu.com/community/EnvironmentVariables berbicara tentang empat tempat di mana kita dapat mengatur variabel lingkungan:

  • ~/.pam_environment- [...] Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris. […] Memerlukan login ulang untuk menginisialisasi variabel. [...]
  • ~/.profile - Ini mungkin file terbaik untuk menempatkan penugasan variabel lingkungan, karena dijalankan secara otomatis oleh DisplayManager selama sesi desktop proses start-up serta oleh shell login ketika seseorang masuk dari konsol tekstual.
  • ~/.bash_profileatau ~/.bash_login- Jika salah satu file ini ada, bash mengeksekusinya daripada "~ / .profile" saat dijalankan sebagai shell login. (Bash akan lebih suka "~ / .bash_profile" daripada "~ / .bash_login"). Namun, file-file ini tidak akan mempengaruhi sesi grafis secara default.
  • ~/.bashrc- Karena cara Ubuntu saat ini mengatur berbagai file skrip secara default, ini mungkin tempat termudah untuk mengatur variabel. Konfigurasi default hampir menjamin bahwa file ini akan dieksekusi di setiap dan setiap permintaan bash serta saat login ke lingkungan grafis. Namun, kinerja-bijaksana ini mungkin bukan hal terbaik untuk dilakukan karena akan menyebabkan nilai-nilai yang tidak perlu diatur berkali-kali.

http://userbase.kde.org/Session_Environment_Variables/en menyarankan tempat ini untuk KDE:

KDE akan menjalankan skrip apa pun yang ditemukannya $HOME/.kde/envdengan nama file yang diakhiri .sh, dan itu akan memelihara semua variabel lingkungan yang ditetapkan oleh mereka. Penting bahwa setiap variabel yang ingin Anda atur juga harus diekspor.

https://help.ubuntu.com/community/ComposeKey#XIM menyarankan untuk memodifikasi ~/.gnomercatau ~/.Xsession.

Denilson Sa Maia
sumber
1

Buat .gnomercfile dalam $ HOME Anda yang merupakan skrip shell ( seperti.bashrc ) yang menetapkan semua variabel yang Anda inginkan.

Mike McQuaid
sumber
Sayangnya, ini tidak berhasil untuk saya.
Bernard
Sudahkah Anda mencoba membuka gnome-terminal dan mengonfirmasi tidak muncul di env?
Mike McQuaid
1
@ Mike: ada di .bashrc saya sehingga akan muncul, tetapi akan tidak akurat. Emacs dan M-x getenvmengonfirmasi bahwa itu tidak ditimpa untuk aplikasi GUI.
Bernard
0

Sudahkah Anda mencoba membuat variabel environment int .profile atau / etc / profile ?

Itu harus bekerja dan harus sudah ada. Tidak seperti .bashrc yang per sesi terminal, ini dimulai saat masuk ke sesi Anda.

codeLes
sumber
Sayangnya, tidak ada efek.
Bernard