Bir kullanıcı ortam değişkenini nasıl ayarlarım? (kalıcı olarak, oturum değil)

Bu beni rahatsız ediyor. Birkaç öneri gördüm (hepsi farklı dosyalar ve sözdizimi kullanıyor) ve hiçbiri işe yaramadı.

Belirli bir kullanıcı için bir ortam değişkenini nasıl ayarlayabilirim? Debian squeeze kullanıyorum. ABC = "123" yapmak için dosyaya koymam gereken sözdizimi tam olarak nedir?

Çözüm

Bildirimi kabuğunuzun başlatma dosyalarına koymanız gerekir:

  • Eğer bash, ash, ksh veya başka bir Bourne tarzı kabuk kullanıyorsanız

     ABC="123"; ABC'yi dışa aktar

.profiledosyanızda (${HOME}/.profile`). Bu, çoğu Unix kurulumunda ve özellikle Debian'da varsayılan durumdur.

Oturum açma kabuğunuz bash ise, bunun yerine .bash_profile (${HOME}/.bash_profile) veya .bash_login kullanabilirsiniz.

Not: Bu dosyalardan herhangi biri mevcutsa ve oturum açma kabuğunuz bash ise, ssh üzerinden veya bir metin konsolunda oturum açtığınızda .profile okunmaz, ancak GUI'den oturum açarsanız .bash_profile yerine yine de okunabilir. Ayrıca, eğer .bash_profile yoksa, o zaman .bashrc kullanın.

  • Eğer giriş kabuğunuz olarak zsh ayarladıysanız, ~/.profile yerine ~/.zprofile kullanın.

  • Eğer tcsh kullanıyorsanız, şunları ekleyin

     setenv ABC "123"

.logindosyasında (${HOME}/.login`)

  • Başka bir kabuk kullanıyorsanız, ortam değişkenlerinin nasıl tanımlanacağını ve kabuk başlangıcında hangi dosyaların çalıştırılacağını kabuk kılavuzuna bakın.
Yorumlar (12)

Bu, hemen hemen her kabuk için kullanabileceğiniz genel bir prosedürdür. Her durumda, kullanıcının normalde hangi kabukla oturum açacağını bilmeniz gerekir:

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"

Daha sonra bu kabuğun normalde hangi nokta dosyalarını okuyacağını bulmanız gerekir:

man $shell

İşe yarayabilecek bir kısayol, kabuk adını içeren nokta dosyalarını listelemektir:

ls ~/.*${shell}*

Giriş sırasında dosyalardan birinin gerçekten okunup okunmadığını kontrol etmek istiyorsanız, örneğin her birindeki dosya adını yazdırabilirsiniz:

echo .bashrc

Oturum açtığınızda, hangi dosyaların okunduğunu görmeniz gerekir ve hangisini değiştireceğinize karar verebilirsiniz. Dikkat edin, echo "$0" veya benzerlerini kullanmayı denemeyin, çünkü $0 değeri kabuğun nokta dosyalarını nasıl işlediğine bağlıdır ve yanıltıcı olabilir.

Değişkenin "kalıcı" olarak bildirilmesi söz konusu olduğunda, bunun yalnızca oturumu kapsadığını unutmayın. Bir değişkenin değerine oturum olmadan erişmenin bir yolu yoktur, bu nedenle oturum dışında bir anlamı yoktur. Eğer "salt okunur" demek istiyorsanız, bu kabuğa bağlıdır ve Bash içinde kullanabilirsiniz:

declare -r VAR

zaten bir değere sahipse veya

declare -r VAR=value

aynı anda atamak için. Tüm kabuklar bu özelliğe sahip değildir.

Çoğu kabukta bir değişken bildirmek için, bir değişken adı ([A-Za-z_][A-Za-z0-9_]*), ardından bir eşittir işareti (ve eşittir işaretinin etrafında boşluk yok), ardından bir değer (değer basit bir [A-Za-z0-9_]+ değilse tercihen tırnak içine alınır) kullanmalısınız. Örneğin:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
Yorumlar (0)

Dışa aktarmayı kullanın.

export ABC="123"

Ayarlanıp ayarlanmadığını kontrol etmek için

env

ve/veya

env | grep ABC

Kalıcı olarak eklemek için bunu ~/.bashrc dosyanıza ekleyin.

export ABC="123"
Yorumlar (6)