Tak długo, jak poprawnie go uruchomisz, zależy to od twoich preferencji.
Oprócz różnic w funkcjach , preferowany jest edytor tekstów. Dzieje się tak nawet wtedy, gdy edytor tekstu jest programem graficznym takim jak Gedit . Nie oznacza to, że nie ma dobrego powodu nano
i vim
są często zalecane. Edytory tekstu oparte na terminalach, takie jak vim
(lub przynajmniej vi
polecenie), i nano
są dostępne nawet, gdy nie ma GUI, a nawet w większości bardzo minimalnych i uszkodzonych systemów ; mają za sobą pewną tradycję (jeśli jesteś stronnikiem tego rodzaju rzeczy); można je uruchamiać w tym samym terminalu, w którym wykonywane są inne zadania; automatycznie integrują się z przepływami pracy użytkowników terminalowego multipleksera ; i są bardziej dostępne niż jakikolwiek innyszczególny graficzny edytor tekstu, nawet Gedit, nawet na Ubuntu (który ma kilka smaków ).
To nie wszystko. Jeśli zamierzasz edytować pliki systemowe, jednym z podejść jest uruchomienie edytora jako root. To nie jedyne podejście, i istnieją pewne argumenty przeciwko nim (patrz poniżej), ale jest to jeden wspólny. Jeśli zastosujesz to podejście i użyjesz programu graficznego jako edytora, musisz zadbać o to, aby uruchomić go w taki sposób, że $HOME
jest to katalog główny root, a nie własny , a to dodaje kolejną warstwę kłopotów i złożoności. Ale już to robisz; biegniesz sudo -H gedit
, co jest jednym z rozsądnych sposobów . Mimo to ta złożoność jest kolejnym powodem, dla którego ludzie sugerują edytory nie graficzne.
Programy graficzne są często bardziej skomplikowane niż programy nie graficzne. Uruchamianie większej liczby rzeczy jako root jest na ogół złe, ponieważ istnieje więcej sposobów, aby coś poszło nie tak, w tym z powodu możliwych błędów, w tym przez przypadek. (Nie graficzne edytory tekstu, które vim
są jednak dość wyrafinowane i często są skonfigurowane do uruchamiania wielu zewnętrznych programów do wykonywania różnych zadań).
Oprócz uruchamiania edytora jako root, innym ogólnym podejściem jest edycja pliku, który edytor może modyfikować nawet podczas działania jako użytkownik (inny niż root), tak aby zmiany w pliku były propagowane do pliku będącego własnością root zmienić. Brzmi to abstrakcyjnie, ponieważ szczegóły różnią się znacznie. Następują dwa główne konkretne podejścia.
sudoedit
Jednym z dość długotrwałych sposobów jest sudoedit
(udokumentowane na tej samej stronie podręcznika cosudo
). Domyślnie sudoedit
używa domyślnego edytora tekstu , który zwykle nie jest - i nie powinien - być programem graficznym. Ale można powiedzieć to, aby użyć dowolnego edytora za pośrednictwem SUDO_EDITOR
, VISUAL
lub EDITOR
zmiennych środowiskowych , który konsultuje się w tej kolejności. W ten sposób możesz uruchomić:
VISUAL=gedit sudoedit filename
Zastąp filename
ścieżką względną lub bezwzględną do pliku.
To tworzy tymczasową kopię pliku, który chcesz edytować. Kopia jest twoją własnością, a nie rootem (lub kimkolwiek jest pierwotny właściciel). Otwiera edytor tekstu i możesz edytować tymczasową kopię. Po zamknięciu edytora tekstu sudoedit
sprawdza, czy rzeczywiście dokonano zmian. Jeśli tak, kopiuje zmodyfikowaną tymczasową kopię z powrotem do oryginału.
Chociaż sudoedit
współpracuje z edytorami graficznymi, jest także przydatny dla edytorów terminalowych. W obu przypadkach edytor tekstu działa tak jak Ty, więc ma konfigurację, a Ty wykonujesz w nim inne czynności niż modyfikacje tego pliku, co zapewnia pewną ochronę przed niektórymi błędami.
Możesz dowolnie ustawić jedną z tych zmiennych środowiskowych . SUDO_EDITOR
jest chyba najlepszy, ponieważ jest używany do mniejszej liczby innych rzeczy. Jeśli jednak to ustawisz gedit
, pamiętaj, że polecenia takie nie będą działać, gdy GUI nie jest dostępne, jak to często bywa (choć nie zawsze ) w wirtualnej konsoli lub przez SSH .sudoedit filename
Backend administratora GVFS
Innym nowszym sposobem na to jest otwarcie pliku za pomocą admin://
ścieżki GVFS, a nie tradycyjnej ścieżki w stylu uniksowym. Dziękuję pomsky za nauczenie mnie o tym. Podobnie jak istnieją ścieżki GVFS do edycji plików, które pod innymi względami nie są dogodnym miejscem do edycji - na przykład dlatego, że znajdują się na zdalnym komputerze, z którym masz połączenie przez SSH - GVFS obsługuje admin://
ścieżki do edycji plików nie posiadasz.
Jest to koncepcyjnie podobne do sudoedit
tego, że uruchamiasz swój edytor jak ty, a plik, który redaktor widzi, jest czymś, co można edytować. Próba otwarcia pliku wymaga uwierzytelnienia; nie jest to magiczny sposób na obejście zwykłych ograniczeń bezpieczeństwa.
gedit admin:///path/to/filename
Tam /path/to/filename
musi być absolutna ścieżka do pliku, zaczynając /
. Po tym są trzy /
postacie admin:
.
Kodowanie i inne rzeczy teoretycznie zależne od konfiguracji edytora
Na kodowanie pliku nie wpływa tak naprawdę to, czy edytor, którego używasz, jest graficzny. Niektóre edytory vim
mogą nawet działać graficznie ( gvim
polecenie) lub nie graficznie ( vim
polecenie). Prosta odpowiedź na pytanie dotyczące kodowania polega na tym, że nie musisz się tym martwić. To wystarczająco blisko prawdy, że tak naprawdę nie musisz czytać reszty tej odpowiedzi.
W obecnych (i ostatnie) wydaniach Ubuntu, komendy jak sudo nano
i sudo vim
uruchomić te redaktorzy jako root ale $HOME
nadal ustawiony na swoim katalogu domowym. Oznacza to, że redaktorzy domyślnie używają twojej konfiguracji zamiast konfiguracji roota. Jeśli jest coś w konfiguracji tych edytorów (lub w programie, który uruchamiają, aby wykonać część swojej pracy, na przykład git
) na temat kodowania lub zakończenia linii , będzie to przestrzegane. Dzięki tak się nie stanie.sudo -H editor
Niektóre osoby używają goły sudo
(tj. Bez -i
lub -H
) dla redaktorów, ponieważ tego chcą. Ale tak naprawdę powinieneś pomyśleć o tym dwa razy. Nie tylko możesz osiągnąć ten cel bardziej czysto za pomocą metody sudoedit
, ale istnieją także inne wady poleceń takich jak sudo nano
i sudo vim
:
Jeśli konfiguracja edytora powoduje, że coś zostanie uruchomione, zostanie ono uruchomione jako root. W przypadku wyrafinowanych edytorów, takich jak vim
, może to spowodować, że całkiem nietypowy kod będzie działał jako root. Jak wspomniano powyżej, mniej kodu uruchamianego jako root jest ogólnie dobry i jest to jeden z argumentów przeciwko uruchamianiu edytorów graficznych jako root.
Jeśli twoja vim
konfiguracja ma wiele wtyczek - na przykład do przeprowadzania analizy statycznej kodu źródłowego podczas pisania - a root nie, mniej rzeczy działa jako root z niż . (Jeszcze mniej działa jako root z , ale twoje wtyczki nadal działają!) Jest to niezależne od tego, czy twój edytor jest graficzny.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Jeśli twoja konfiguracja edytora jest zepsuta i nie pozwala ci na łatwą edycję plików, to naprawienie tego może być jeszcze bardziej kłopotliwe, ponieważ dotyczy również rootowania. To tylko kłopot, a nie trudny problem do rozwiązania.
Polecenia takie sudo vim
mają trochę ten sam problem co polecenie (źle doradzone!) sudo gedit
. Jeśli uruchomisz edytor taki vim
jak root, ale bez resetowania $HOME
(jak sudo -H
i sudo -i
zrobiłby to), i utworzy on pliki konfiguracyjne dla siebie , pliki konfiguracyjne będą znajdować się w twoim katalogu domowym, ale będą własnością root, a twoja konfiguracja może być nieco zepsuta kiedy później uruchomisz edytor jak ty.
Cóż, to z pewnością brzmi jak ten problem! Powodem, dla którego jest to mniej ważna sprawa niż w przypadku aplikacji graficznych, jest to, że edytor zwykle wciąż się uruchamia, komunikaty o błędach są zwykle łatwiejsze do zrozumienia, zwykle łatwiej jest ustalić, na które konkretne pliki mają wpływ, a uszkodzenie zwykle ogranicza się do ten jeden program. (Programy graficzne używają plików konfiguracyjnych w większej liczbie miejsc). Ponadto, w przeciwieństwie do edytorów graficznych, użytkownicy, którzy tylko przypadkowo korzystają z edytora tekstu i nie zmieniają jego konfiguracji celowo, raczej nie doświadczają tego problemu.
Ponownie możesz użyć konfiguracji edytora własnego konta użytkownika, unikając problemów z uprawnieniami, używając sudoedit
lub, z pulpitu, uruchamiając edytor normalnie, ale uzyskując dostęp do pliku przez admin://
ścieżkę.
Na koniec zauważ, że wyżej wspomniane zachowanie, sudo
kiedy -H
lub kiedy -i
zostanie przekazane, jest faktycznie planowane do zmiany w przyszłej wersji Ubuntu (tak jak już wiele lat temu w większości systemów operacyjnych typu Unix, które używają sudo
). Zachowanie zmieniło się już w Ubuntu 19.10 , która jest wersją rozwojową od tego pisania.
-H
część jest ważna , nie używaj jejsudo
do uruchamiania aplikacji GUI bez niej.