Czy można przedefiniować katalog domowy? na przykład aby /ext1/username
zamiast /home/username
, czyli rozszerzania ~
do innego katalogu (w przeciwieństwie do zmieniających się rzeczywisty katalog domowy w którym znajdują się pliki domowe użytkowników).
(To pytanie jest w większości akademickie, ponieważ wydaje się, że jest to zła praktyka. Nie mam również wyboru w kwestii korzystania csh
, pomimo przeczytania pierwszej dziesiątki).
~
do czegoś innego niż rzeczywisty katalog domowy?~
do innego katalogu (nie, jeśli dobrze rozumiem twoją alternatywę, zmianę miejsca, w którym powinny znajdować się katalogi domowe wszystkich użytkowników). Nie zdawałem sobie sprawy, że~
interpretowano to jako krótką formę$HOME
, jak opisał @michas w swojej odpowiedzi.Odpowiedzi:
Tylda
~
jest interpretowana przez twoją powłokę. Twoja powłoka będzie interpretowana~
jako krótka forma$HOME
.Spróbować
(echo ~; HOME=foo; echo ~)
. Powinno to najpierw wydrukować twój prawdziwy katalog domowy, a następnie „foo”, kiedy to ustawisz$HOME
.Domyślna wartość
$HOME
pochodzi od konfiguracji systemu. Służygetent passwd
do wyświetlania listy wszystkich znanych użytkowników i ich katalogów domowych. W zależności od konfiguracji systemu wpisy te mogą pochodzić z/etc/passwd
dowolnej zdalnej usługi katalogowej.Jeśli chcesz tylko tymczasowo przedefiniować swój katalog domowy, po prostu ustaw inny
$HOME
.Jeśli chcesz go na stałe zmienić, musisz zmienić hasło, np. Ręcznie edytując
/etc/passwd
.źródło
csh
że odpowiednia zmienna to$home
(małe litery), a ty niesetenv HOME /ext1/acheong
możesz - możesz tylkoset home=/ext1/acheong
i to działało dla mnie.)usermod -d
vipw
(lub dowolnego interfejsu GUI, który udostępnia Twój system operacyjny) zamiast/etc/passwd
bezpośrednio edytować . Bezpośrednia edycja grozi uszkodzeniem pliku, co może być trudne do odzyskania.Wartość, która jest używana,
~
jest określana na podstawie wartości uzyskanej z administracyjnej bazy danych (getent passwd
), zwykle w/etc/passwd
pliku, dla zdefiniowanego tam katalogu domowego każdego użytkownika.Szósta kolumna w tym pliku to miejsce, z którego pochodzi wartość, gdy ktoś
cd ~
pisze.nsswitch
Możesz zobaczyć, czego system użyłby do katalogu domowego użytkownika za pomocą polecenia
getent passwd
:„Baza danych”, która je udostępnia, jest kontrolowana przez system rozpoznawania nazw systemu zdefiniowany w
/etc/nsswitch.conf
.Pliki powyżej oznaczają
/etc/passwd
, ale „baza danych” może pochodzić na przykład z LDAP, NIS lub innych lokalizacji w sieci.Przeprowadzka / nowa definicja?
Wykonanie tej operacji jest trochę trudne po utworzeniu kont. Jeśli tworzysz konta od zera, przedefiniowanie lokalizacji użytkownika w katalogu domowym jest trywialne. Po uruchomieniu
useradd
polecenia możesz określić lokalizację, która ma być używana dla katalogu domowego użytkownika.Przykład
fragment strony man
Dla istniejących kont?
Staje się to bardziej operacją chirurgiczną, ponieważ często ścieżka katalogu domowego użytkownika jest włączana statycznie do plików konfiguracyjnych, co utrudnia.
Przykład
Będą też muszą być stałe, albo będziesz musiał podać link od
/home/sam
do nowej lokalizacji/ext1/sam
.Przenoszenie, gdy „baza danych” nie jest
/etc/passwd
Jeśli system pobiera katalogi domowe z LDAP, NIS itp., Musisz wykonać relokację w tych systemach i skoordynować przenoszenie plików z
/home/sam
do/ext1/sam
.Bibliografia
źródło
Jeśli powodem jest rozłożenie użytkowników na wiele systemów plików, możesz również użyć
automounter
. I nawet pozwalają mieć inny katalog „podstawowy” dla użytkowników.źródło