Birden fazla kullanıcı için tek bir .bashrc dosyasını nasıl ayarlayabilirim?


30

Çalışmam sırasında bashrc'ye sürekli takma ad komutları eklemem gerekiyor, bu komutların çoğunun başka kullanıcılar tarafından çalıştırılması gerekiyor. bashrc'ye harici kaynaktan takma ad komutları ekleyebilmemin bir yolu var mı?

Yanıtlar:


40

Kullanıcıların ana dizini içindeki çoğu config dosyası, içindekileri geçersiz kılmakta / bunlara eklemektedir - örneğin, sistem genelindeki yapılandırmaya ek olarak, /etckullanıcıların evindeki GIMP ayarları .~/.gimp-2.*/etc/gimp/2.0

Böylece ~/.bashrc, sistem çapında yapılandırma dosyalarını /etc/bash.bashrc (işlevler / takma adlar için ) veya /etc/profile (çevre işleri için) düzenleyebilirsiniz - tam listeyi aşağıdakilerden yapabilirsiniz man bash:

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

Bu uyarı dosyalardaki birkaç Linux sistemi için verilmiştir:

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

Böylece bu dosyaları düzenleyebilir, önce onları yedeklemek ( cp /etc/bash.bashrc /etc/bash.bashrc-backupörneğin) veya bir kabuk betiği /etc/profile.doluşturmak isteyebilirsiniz - örneğin, bu komutlarla bir tane oluşturabilirsiniz (sudo / as root ile):

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

Öyleyse aç şunu nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

Ve çıktısında görünüp görünmediğini kontrol ederek çalışıp çalışmadığını kontrol edin alias- Değişiklikleri görmek için oturumu kapatmanız / oturum açmanız veya yeniden başlatmanız gerekebilir (eğer istemiyorsanız, source /etc/profileherhangi bir değişiklik işe yarayabilirse çalışın)

[değiştir: bu ölü bağlantı kaldırıldı] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
Orada pek çok iyi öneri var. Bence bahsetmeye değer başka bir seçenek daha var. Biri, yeni oluşturulan kullanıcılar için /etc/skel/.bashrciçeriğinin nasıl ~/.bashrcgörüneceğini değiştirmek üzere düzenlenebilir .
kasperd

@kasperd - güzel bir fikir (eğer istersen buna cevap verebilirsin)
Wilf

Tecrübelerime göre ~/.bash_logoutve /etc/bash.bash_logoutişe yaramaz. :(
Paddy Landau

İçinde AFAIK takma /etc/profile.d/edecek değil alt süreç sağ tarafından alınmayı? Yani takma ad yalnızca Bash giriş yapan kabuk olduğunda kullanılabilir mi?
Franklin Yu,

Bazılarının yalnızca bir TTY'yi tek çevre olarak kullandıklarında çalıştığını düşünüyorum, bir masaüstü terminalinde bazıları kullanılamayabilir. Bunu doğrulamak için bunu test etmek zorunda kalacağım ve şu anda yapamam!
Wilf

7

Git /etc/bash.bashrc

vim /etc/bash.bashrc

ve takma adınızı orada yapın.

takma adınızı son satıra ekleyin.

alias abc = "her neyse"

Bu takma ad tüm kullanıcılar için küresel hale gelecektir.

ancak güvenlik nedeniyle size bunu önermiyoruz.

profile.dkullanıcı ortamı dosyalarını içeren bir dizin var

gitmek

cd /etc/profile.d/

vim takma adları

ve takma adlarınızı buraya ekleyin.

sistem dosyalarınızı etkilemeden. Ortam dosyalarınızla çalışmanın güvenli ve doğru yoludur.


3

Burada zaten kabul edilmiş bir cevap var, ancak /etc/profile.d, vb. İçerisindeki dosyalar ile uğraşmak yerine, sistem ortamındaki kullanıcı ortamlarının yapılandırmasını idare etmek için bazı ortam modülleri kullanmayı düşünebilirsiniz. bu kontrolü birçok mermi arasında tek bir yerde yönetin. Lmod (çok aktif geliştirme aşamasında), C / TCL modülleri (klasik çözüm) veya Cmod (hafif).


1

Bunu doğru yapıp yapmadığımı bilmiyorum, ancak / home / ComunAtodos dizinini tutmak (benim için bir linux ana dizini olmadığını açıkça belirtmek için büyük harfle ve ispanyolca yapmak) ve .bashrc, .nanorc ve .bash_aliases orada. Sonra /etc/skel/.profile içindeki dosyalara atıfta bulunuyorum, böylece yeni kullanıcılar onlara işaret ediyor ve sadece onlara ihtiyacı olan belirli kullanıcılara ekstralar ekliyorum.


-1

Linux operatörü sisteminde gerçekten yeniyim, ancak /etc/.bashrc dosyasını değil, tüm kullanıcıları .bashrc dosyasını değiştirmek için çalışan bir bash betiğinin bir taslağını yaptım.

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

Tamam, bu betiğin çalıştığını biliyorum, ama hatasız değilse yapamam :) Ayrıca, tüm kullanıcıları içermeyecek şekilde değiştirebilir, belki de .bashrc dosyasını isteyen tüm kullanıcılar için bir dosya oluşturabilirsiniz. özelleştirilmiş.


3
İlk satır (/ etc / passwd dosyasını okuduğunuz yerde) hiçbir şey yapmıyor gibi görünüyor. Dördüncü hattınız bir hata gibi görünüyor (ve neden hataları bastırmak istediğinizi anlamıyorum). "exit 0" gereksizdir. Bu, tüm kullanıcıların zaten bir .bashrcdosyaya sahip olmasını gerektirir ve satırın zaten dosyalarında olup olmadığına bakmaksızın her zaman eklenir.
thomasrutter,

Tüm kullanıcıların isimlerini bu satırdan almayı mı düşünüyordum? Ama şimdi sadece </ etc / passwd'yi kesebileceğimi düşündüğüm için, listede çok sayıda isim vardı, bu yüzden BT'nin bashrc dosyası olmayanlar için hata yapmalarını istemedim. Yalnızca satır yoksa nasıl eklenir? Ve bu tür bir rütbe için uygun betiği yazabilir misiniz, lütfen sadece bir haftadır Linux kullanıyordum.
Farhad Rahimi,

Zaten bazı becerileriniz var gibi gözüküyor ama bu eğitimde kabuk komut dosyası yazmak için iyi bir şey var: shellscript.sh . Satır eklenmesi gibi diğer sorular için henüz mevcut değilse, burada yeni sorular sormaktan çekinmeyin.
thomasrutter,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.