Inilah motivasi untuk pertanyaan itu:
Saya menggunakan Ubuntu 12,04 LTS 2 dengan desktop Unity. Dalam file .bashrc saya, saya menambahkan beberapa direktori ke variabel PATH saya dan mendefinisikan beberapa variabel lingkungan, seperti JAVA_HOME. Ketika saya meluncurkan aplikasi dari terminal (menjalankan bash, shell default saya), ini berfungsi dengan baik, tetapi untuk beberapa pintasan yang menggunakan peluncur Unity, mereka menjalankan aplikasi yang tampaknya ditentukan untuk menggunakan #! / Bin / sh, yang alias / bin / dash, dan mereka tidak mengambil konten ~ / .bashrc atau ~ / .profile.
Saya kira saya bisa mengubah semua cara pintas ini untuk menggunakan / bin / bash alih-alih / bin / sh untuk memaksanya mengambil perubahan .bashrc, tapi itu tampaknya sangat gila.
Mengingat bahwa Ubuntu 12.04 (secara default) alias / bin / sh ke / bin / dash dan bahwa shell default saya adalah / bin / bash, apakah ada satu tempat di mana saya dapat memilih untuk memodifikasi PATH dan mendefinisikan variabel lingkungan jika saya menginginkannya untuk hadir dalam semua keadaan ini:
- Setiap kali saya membuat shell pesta non-login (menggunakan terminal dalam kesatuan)
- Setiap kali saya membuat shell pesta login (misalnya, login jarak jauh dari ssh)
- Setiap kali saya menggunakan peluncur aplikasi Unity (mengingat bahwa peluncur menggunakan / bin / sh).
- Setiap kali tugas cron dijalankan (mengingat bahwa SHELL = / bin / sh in / etc / crontab).
Jika saya mengerti dengan benar, saya menduga bahwa:
- (1) / (2) dan (3) / (4) berbeda karena (1) / (2) adalah bash dan (3) / (4) adalah tanda hubung.
- (1) dan (2) berbeda karena file yang bash pilih untuk memuat berbeda tergantung pada apakah itu shell login atau tidak.
- (3) dan (4) berbeda karena (3) akan datang di beberapa titik setelah saya masuk (dan karenanya ~ /. Profil akan dipasok oleh salah satu proses induknya, sementara (4) akan datang di beberapa titik ketika saya tidak masuk, dan karenanya ~ /. profil tidak akan dibaca.
(Saya tidak akan terkejut jika faktor-faktor lain juga penting, seperti apakah shell itu interaktif atau tidak, jadi mungkin ada lebih banyak kombinasi yang bahkan belum saya antisipasi ... Saya senang pertanyaan saya "membaik " dalam hal itu.)
Saya berharap bahwa pada titik tertentu, seseorang pasti telah membuat semacam panduan yang memberi tahu Anda bagaimana / di mana memodifikasi variabel lingkungan dengan cara shell-independent (atau setidaknya cara yang kompatibel dengan dash / bash) ... Saya hanya bisa ' Tampaknya tidak menemukan istilah penelusuran yang tepat untuk menemukan panduan semacam itu.
Solusi atau petunjuk untuk solusi sangat dihargai!
Diperbarui:
- Klarifikasi: Ini adalah pengguna Ubuntu default yang dibuat oleh proses instalasi 12.04, jadi tidak ada yang mewah. Itu memang memiliki ~ / .profile (yang secara eksplisit sumber ~ / .bashrc), dan satu-satunya file ~ / .bash * yang ada adalah .bashrc, .bash_history, dan .bash_logout ... jadi tidak ada .bash_profile.
- Penekanan pada ruang lingkup: Saya tidak terlalu peduli dengan cangkang selain cangkang interaktif bawaan (bash) dan skrip apa pun yang menggunakan / bin / sh (alias terputus-putus), jadi tidak perlu menyulitkan ini dengan tambahan apa pun untuk tcsh / ksh / zsh / dll. dukung.