Nowe posty

Autor Wątek: Zsh - wada fabryczna?  (Przeczytany 3105 razy)

Offline Kãa Esanæan'eveôse

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 40
    • Zobacz profil
Zsh - wada fabryczna?
« dnia: 2017-01-08, 23:31:38 »
Jakiś czas temu zauważyłam dziwną rzecz związaną z zsh. Przy pierwszym uruchomieniu w katalogu użytkownika generuje się plik .zshrc - ale nie powstaje takie coś w katalogu /root, jak się okazuje (tam też nie zapisuje się historia zsh, nie jestem pewna, czy to jest właśnie z tym powiązane). W przypadku występującego od początku .bashrc plik jest obecny w obu tych miejscach.
Kiedy szukałam informacji, nie dotarłam do przyczyn takiego stanu rzeczy ani tym bardziej informacji, co należy z tym zrobić. Raczej nie jest to kwestia konkretnej wadliwej wersji zsh, bo ten problem dotyczył zarówno użytkowników Debiana, Ubuntu jak i Archa i pochodnych. Z tego, co pisali, wynikało, że przez dłuższy czas istniał taki stan rzeczy, dopóki w czymś to nie zaszkodziło. Nie wiem, czy z jakichś powodów tak robi się u niektórych, czy wszyscy używający zsh mają taki "błąd".
Skąd coś takiego się bierze? To jest normalne i tak ma być? A jeśli nie jest, da się coś z tym zrobić?
#562166  ||  UG9kcGlzdWrEmSBzacSZIGtyd2nEhSAtIG5pZSBwb3TEmXBpYWpjaWUgbW5pZSB6YSB0byE=

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Zsh - wada fabryczna?
« Odpowiedź #1 dnia: 2017-01-09, 10:34:21 »
U mnie jest tak:
* zsh jest domyślnym shellem dla roota i "zwykłego" użytkownika
* root nie ma u siebie żadnego z 4 plików startowych
* nie ma prompta przy logowaniu
* tworzy się .histfile, ale mam to wymuszone w /etc/zsh/zshrc

Patrząc na kod źródłowy ZSH sprawa wygląda tak:

* Plik INSTALL, linia 261 i plik Doc/Zsh/mod_newuser.yo:
 Jeżeli shell jest odpalony w trybie interaktywnym i brakuje wszystkich plików konfiguracyjnych (.zshenv, .zshrc, .zprofile i .zlogin), to uruchamiany jest skrypt Scripts/newuser.

* Skrypt Scripts/newuser
Jeżeli istnieje funkcja zsh-newuser-install to ją uruchom.

* Fragment funkcji Functions/Newuser/zsh-newuser-install:
...

# Quick test not requiring any setting up.
# Don't run if we're root.  (These variables are provided by the shell.)
if (( EUID == 0 || UID == 0 )); then
  if [[ $1 = -f ]]; then
    print -r "$myname: won't run as root.  Read the manual." >&2
  fi
  return 1
fi

...


Ergo: procedura generacji skryptów startowych ZSH dla roota jest wyłączona z definicji i w dodatku (w niegrzeczny sposób) ignoruje flagę -f
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Kãa Esanæan'eveôse

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 40
    • Zobacz profil
Odp: Zsh - wada fabryczna?
« Odpowiedź #2 dnia: 2017-01-09, 20:43:16 »
Bardzo dziękuję za wyjaśnienia.
Czyli oznacza to, że jest to celowe i zamierzone i raczej nie jest dobrym pomysłem walczyć z tym na siłę?
Zastanawiałam się nad bezczelnym skopiowaniem pliku .zshrc do /root, ale dopóki nie ma to większego praktycznego znaczenia, uznałam, że nie ma sensu ryzykować zepsucia czegoś.
#562166  ||  UG9kcGlzdWrEmSBzacSZIGtyd2nEhSAtIG5pZSBwb3TEmXBpYWpjaWUgbW5pZSB6YSB0byE=

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Zsh - wada fabryczna?
« Odpowiedź #3 dnia: 2017-01-09, 20:59:12 »
.zshrc u roota to nie problem (jest normalnie obsługiwany tak, jak pozostałe 3 pliki). Projektanci zdecydowali jednak, że dla roota nic nie będzie się robić automatycznie.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy