Ubuntu Suomen keskustelualueet
Muut alueet => Yleistä keskustelua => Aiheen aloitti: raimo - 16.02.25 - klo:04.31
-
Eli vi-vihaajana olen tehnyt näin
sudo mv /usr/bin/vi /usr/bin/vi-orig
sudo ln -s /usr/bin/nano /usr/bin/vi
Nyt kuitenkin haluaisin kokeilla ~/.zshrc tiedostoon
EDITOR=/usr/bin/nano
VISUAL=$EDITOR
että tehoaako?
En kuitenkaan pääse symbolisesta linkistä eroon mitenkään, olen poistanut sekä nano:n että vi:n
Silti kun komennan uudeleenasennuksen jälkeen vi nano aukeaa.
Poistin unlinkillä sekä rm, sama lopputulos, linkki on ja pysyy.
edit: zsh on käytössä jos se jotain vaikuttaa ja Manjaro käyttiksenä.
Se etsii nanoa vaika molemmat on poistettu niin tämä tulee
raimo@kone-3% vi
zsh: command not found: nano
raimo@kone-3% [/usr/bin]
Tämä on tietenkin unelmatilanne vi päivitys ei poista symlinkkiä joten nano on ja pysyy :D
Olisi kuitenkin ihan opettelun kannalta hyvä titää miten ZSH:ssa poistetaan symbolinen linkki tai ainakin sen toiminnallisuus.
raimo@kone-3% sudo unlink /usr/bin/vi
[sudo] password for raimo:
raimo@kone-3% vi
raimo@kone-3% sudo unlink /usr/bin/nano
raimo@kone-3% vi
zsh: command not found: nano
raimo@kone-3%
-
Mitäs kummaa se tämä ex on?
raimo@kone-3% ls -la vi
lrwxrwxrwx 1 root root 2 loka 6 2022 vi -> ex
raimo@kone-3% ls -la nano
-rwxr-xr-x 1 root root 279056 tammi 4 23:19 nano
raimo@kone-3% ls -la vi
lrwxrwxrwx 1 root root 2 loka 6 2022 vi -> ex
raimo@kone-3% ls -la nano
-rwxr-xr-x 1 root root 279056 tammi 4 23:19 nano
raimo@kone-3% ls -la ex
-rwxr-xr-t 1 root root 260096 loka 6 2022 ex
raimo@kone-3% sudo mv ex ex-orig
[sudo] password for raimo:
raimo@kone-3% sudo unlink vi
raimo@kone-3% vi
raimo@kone-3% ls vi
ls: cannot access 'vi': No such file or directory
raimo@kone-3% vi
raimo@kone-3% sudo unlink nano
raimo@kone-3% vi
zsh: command not found: nano
raimo@kone-3%
Komento vi aukaisee nanon vaikka sitä ei tiedostolistauksessa ole, siis vi tiedostoa.
Foliohattu syvälle pääähän. :o
-
raimo@kone-3% sudo unlink vi
unlink: cannot unlink 'vi': No such file or directory
raimo@kone-3% sudo pacman -S vi
warning: vi-1:070224-6 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Packages (1) vi-1:070224-6
Total Installed Size: 0,31 MiB
Net Upgrade Size: 0,00 MiB
:: Proceed with installation? [Y/n] n
raimo@kone-3% sudo unlink vi-1:070224-6
unlink: cannot unlink 'vi-1:070224-6': No such file or directory
raimo@kone-3% sudo unlink vi-1
unlink: cannot unlink 'vi-1': No such file or directory
raimo@kone-3% whereis vi
vi: /usr/share/man/man1p/vi.1p.gz /usr/share/man/man1/vi.1.gz
raimo@kone-3% sudo pacman -S vi
warning: vi-1:070224-6 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Packages (1) vi-1:070224-6
Total Installed Size: 0,31 MiB
Net Upgrade Size: 0,00 MiB
:: Proceed with installation? [Y/n] Y
(1/1) checking keys in keyring [################################################] 100%
(1/1) checking package integrity [################################################] 100%
(1/1) loading package files [################################################] 100%
(1/1) checking for file conflicts [################################################] 100%
(1/1) checking available disk space [################################################] 100%
warning: could not get file information for usr/bin/vi
:: Running pre-transaction hooks...
(1/1) Creating Timeshift snapshot before upgrade...
==> skipping timeshift-autosnap due skipRsyncAutosnap in /etc/timeshift-autosnap.conf set to TRUE.
:: Processing package changes...
(1/1) reinstalling vi [################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
raimo@kone-3% vi
raimo@kone-3% nano aukeaa...
raimo@kone-3% whereis vi
vi: /usr/bin/vi /usr/share/man/man1p/vi.1p.gz /usr/share/man/man1/vi.1.gz
raimo@kone-3% [/usr/bin]
Se on jossain: koska pacman vain uudelleenasentaa sen:
raimo@kone-3% sudo pacman -S vi
warning: vi-1:070224-6 is up to date -- reinstalling
-
raimo@kone-3% vi
raimo@kone-3% sudo pamac remove vi
[sudo] password for raimo:
Preparing...
Checking dependencies...
To remove (1):
vi 1:070224-6 core
Total removed size: 327,1 kB
Apply transaction ? [y/N] Y
Removing vi (1:070224-6)... [1/1]
Transaction successfully finished.
raimo@kone-3% vi
raimo@kone-3% vi
raimo@kone-3% ls /usr/bin/vi
ls: cannot access '/usr/bin/vi': No such file or directory
raimo@kone-3% whereis vi
vi: /usr/share/man/man1p/vi.1p.gz
raimo@kone-3% vi
raimo@kone-3% nano aukeaa vaikka vi komentoa tai tiedostoa ei ole missään [~]
-
raimo@kone-3% vi
raimo@kone-3% vi
raimo@kone-3% whereis nano
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
raimo@kone-3% sudo pamac remove nano
Preparing...
Checking dependencies...
Error: Failed to prepare transaction:
could not satisfy dependencies:
- removing nano breaks dependency 'nano' required by nano-syntax-highlighting
raimo@kone-3% sudo pamac remove nano nano-syntax-highlighting
Preparing...
Checking dependencies...
To remove (2):
nano-syntax-highlighting 2022.11.02.r102.gbb94603-1 extra
nano 8.3-1 core
Total removed size: 2,9 MB
Apply transaction ? [y/N] y
Running pre-transaction hooks...
Removing old entries from the info directory file... [1/1]
Removing nano-syntax-highlighting (2022.11.02.r102.gbb94603-1)... [1/2]
Removing nano (8.3-1)... [2/2]
Running post-transaction hooks...
Arming ConditionNeedsUpdate... [1/1]
Transaction successfully finished.
raimo@kone-3% nano
zsh: command not found: nano
raimo@kone-3% vi
zsh: command not found: nano
raimo@kone-3%
Senhän pitäisi lähteä komennolla
sudo unlink /usr/bin/vi
Mutta kun ei lähde, ei sitten millään.
-
Aivan ensiksi sanoisin, että kannattaa oppia eroon siitä Windows-tavasta, että ensimmäinen reaktio kaikkeen on aina ”poista asennus ja asenna uudelleen”. Linuxissa se harvoin auttaa, mutta harmia siitä voi olla.
Seuraavaksi kokeile, mihin ”vi” oikein viittaa:
whence -v vi
Minulla tulokseksi tulee:
vi is /usr/bin/vi
Symlinkit ovat tuiki tavallisia tiedostoja, joten ne voi poistaa rm-komennolla.
”ex” taas on se varsinainen muokkain, jonka ”visuaalinen tila” vi on.
MUOKS: Tuli mieleen, että asiaan voi puuttua alternatives-järjestelmäkin (en tiedä, käyttääkö Manjaro sitä). Voisi kokeilla myös:
update-alternatives --display vi
-
raimo@kone-3% whence -v vi
vi is an alias for nano
Ei löydy komentoa update-alternatives?
-
Symlinkit ovat tuiki tavallisia tiedostoja, joten ne voi poistaa rm-komennolla.
Mutta kun se ei poistu vaikka vi tiedoston poistaa, rm tai unlink -komennoilla.
Linkki jää edelleen voimaan.
Sitähän minä olen tässä yrittänyt selostaa jo useiden viestien ajan.
-
Symlinkit ovat tuiki tavallisia tiedostoja, joten ne voi poistaa rm-komennolla.
Mutta kun se ei poistu vaikka vi tiedoston poistaa, rm tai unlink -komennoilla.
Puhut päällekkäin kahdesta asiasta: linkin olemassaolosta ja siitä, mitä vi-komento käynnistää.
MUOKS: Korjaan vastaustani, koska huomasin yltä tämän:
raimo@kone-3% whence -v vi
vi is an alias for nano
Näin ollen on yhdentekevää, onko vi-symlinkki olemassa vai ei, koska olet tehnyt vi:stä aliaksen!
MUOKS 2: Teen juotuani jatkan…
Kun Zsh-komentotulkkiin kirjoittaa komennon ”vi”, Zsh kokeilee ensin, onko kyseessä alias. Se korvataan sitä vastaavalla jonolla, tässä tapauksessa siis ”nano”. (Tässä välissä itse asiassa kokeiltaisiin vielä, onko ”vi” funktio, jollei sitä olisi jo lavennettu.) Vasta tämän jälkeen lähdetään kokeilemaan, löytyykö $PATH-hakupolun varrelta komentoa ”vi” missään muodossa – symlinkkinä tai suoraan ohjelmatiedostona.
Sinun pitää siis kurkistaa Zsh:n käynnistystiedostoihin ja etsiä, missä alias määritellään. Oleellisia tiedostoja ovat /etc/zsh/zshrc tai /etc/zshrc (järjestelmänlaajuinen) sekä ~/.zshrc (käyttäjäkohtainen), koska lähinnä noissa tai niiden lukemissa tiedostoissa on tarkoitus määritellä aliakset.
-
OK, super Kiitos! Siellähän se oli, alias vi='nano ' en kyllä yhtän muista tuota tehneeni...
No ei sitä kukaan muukaan ole tehnyt. :) Tämähän ratkesi, nam! :D
-
Tämä oli kovin kiinnostava ongelma. Minulle jäi vielä epäselväksi poistuiko /usr/bin/vi vai eikö poistunut niillä poistokäskyillä.
Ja olisiko alias voitu kiertää Zsh:ssa komennolla
\vi
-
Tämä oli kovin kiinnostava ongelma. Minulle jäi vielä epäselväksi poistuiko /usr/bin/vi vai eikö poistunut niillä poistokäskyillä.
Ja olisiko alias voitu kiertää Zsh:ssa komennolla
\vi
Poistui kyllä ja nano jatkoi aukeamista. komennolla vi vaikka vi oli poistettu, no tietenkin koska siellä oli alias.
-
Iltaa! :)
EDITOR=/usr/bin/nano
VISUAL=$EDITOR
~/.zshrc tiedostoon laitettuna toimii, nyt se on hyvä.
Mutta miten laitetaan sudo:lle sama /root/.zshrc tiedostoon laitettu tuo sama ei tehoa?
Aluksi luulin etä se toimii, mutta ei toimi.
esim sudo crontab -e aukeaa vi:llä kun normikäyttäjän crontab -e aukeaa nanolla?
Eli onko se symbolinen linkki sittenkin ainoa vaihtoehto?
-
Tämä toimii kaikissa mahdollisissa muodoissa, haittapuolena on se että pitää uusia kun vi päivittyy.
cd /usr/bin/
sudo mv vi vi-orig
sudo ln -s nano vi
Toimii! :)
-
Microsoftin tekoälyn kanssa oltiin samoilla linjoilla kun kokeiltiin jopa visudo:n erinäisiä asetuksia ja mikään ei auta.
Miksi Microsoft, no se on Edgessä kiinteästi. Ja näemmä osaa Linuxia siinä kuin minäkin :D
Miten on tarviiko noi muuttujat tms mitä ne onkaan export:n eteen, jossain sitä näkee ja jossain taas ei?
Kokeiltu on molemmilla tavoilla ja ei apuja.
-
Eli onko se symbolinen linkki sittenkin ainoa vaihtoehto?
Miten olis jo toimivaksi havaittu alias? Et varmaan enää niin helposti unohda, kuka sen teki. ;)
-
Ainakin pari ongelmaa vastassa:
Ensinnäkin, oletko vaihtanut rootinkin oletuskomentotulkin Zsh:ksi vai onko se yhä Bash? Tämän voi tarkistaa näin:
getent passwd root | cut -d: -f7
Jos root käyttää Bashia, siihen eivät tietenkään vaikuta Zsh:n alustusskriptit.
Toisekseen, sudon käyttämä ympäristö on eri asia kuin rootin oma ympäristö. $EDITOR-muuttujan voi lisätä ”säilytettäviin” (ts. niihin, joiden arvo viedään nykyiseltä käyttäjältä ylläpitäjäkäyttäjälle) visudolla joko etsimällä rivi
Defaults env_keep = "…"
…ja lisäämällä EDITOR-muuttuja tuonne lainausmerkkien sisään tai sitten lisäämällä uuden rivin:
env_keep += "EDITOR"
-
Joo, Bashihan sieltä ilmestyi, mten vaihdetaa ZSH:ksi? Olen sen tehnyt normikäyttäjälle mutta en muista miten?
Defaults env_keep += "EDITOR" visudoon auttoi, nyt kaikki rokkaa. :)
Kiitos paljon!
-
Joo, Bashihan sieltä ilmestyi, miten vaihdetaa ZSH:ksi? Olen sen tehnyt normikäyttäjälle mutta en muista miten?
Root (tai mikä vaan) shell vaihdetaan yksinkertaisesti näin:
cd /root
sudo chsh -s $(which zsh)
Tavallinen käyttäjä ilman sudoa.
Tälläistä jälkeä komento antaa:
raimo@kone-3% cd /root
raimo@kone-3% sudo chsh -s $(which zsh)
[sudo] password for raimo:
Changing shell for root.
Shell changed.
raimo@kone-3% sudo getent passwd root | cut -d: -f7
/usr/bin/zsh
raimo@kone-3%
-
Root (tai mikä vaan) shell vaihdetaan yksinkertaisesti näin:
cd /root
sudo chsh -s $(which zsh)
Tai vielä yksinkertaisemmin:
# Vaihtaa vuorovaikutteisesti komennon ajavan käyttäjän komentotulkin
chsh
# Vaihtaa vuorovaikutteisesti root-käyttäjän komentotulkin
sudo chsh root
-
Root (tai mikä vaan) shell vaihdetaan yksinkertaisesti näin:
cd /root
sudo chsh -s $(which zsh)
Tai vielä yksinkertaisemmin:
# Vaihtaa vuorovaikutteisesti komennon ajavan käyttäjän komentotulkin
chsh
# Vaihtaa vuorovaikutteisesti root-käyttäjän komentotulkin
sudo chsh root
Kiitos, pitää yrittää oitää mielesssä toi komento, kirjoitan sen johonkin ylös. :)