Похоже, я разбил мою систему после редактирования файлов /etc/environment
и .bashrc
.
Мой рабочий стол не запускается, и мне нужно исправить эти файлы обратно. Но так как моя система не находит никаких команд, мне нужно использовать весь путь.
Где я могу найти исполняемый файл vim, чтобы запустить его по полному пути?
Кажется, что ваша PATH
переменная окружения была повреждена.
Вы можете найти vim
в /usr/bin/vim
$ which vim
/usr/bin/vim
В /usr/bin
вы также можете найти vi
и gedit
nano
можно найти в /bin
$ which nano
/bin/nano
sudo
можно найти в /usr/bin
$ which sudo
/usr/bin/sudo
Примечания:
Как упоминалось в @SorenA и @PatrickMevzek, поиск Расположение файла также можно сделать с помощью whereis
Как упоминалось @Terrance - whereis vim
находит все имена с похожими vim в имени. Обратите внимание, что большинство результатов не являются vim
исполняемый файл. [тысяча сто двадцать шесть]
man which
- найти команду - она делает это путем поиска в PATH исполняемых файлов, соответствующих именам аргументов.
man whereis
- whereis затем пытается найти нужную программу в стандартных местах Linux и в местах, указанных в $ PATH и $ MANPATH.
Поскольку ваш PATH поврежден, полезные исполняемые файлы находятся в папках /usr/bin
и /bin
. После ввода типа терминала в
export PATH=/usr/bin:/bin
вы сможете запустить sudo vim
без необходимости вводить пути перед именами.
Следующие команды восстановят файл /etc/environment
и файл ~/.bashrc
.
Эта команда поместит оператор пути обратно в /etc/environment
:
sudo bash -c 'echo "PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games\"" > /etc/environment'
Затем вы можете получить исходный файл, чтобы установить оператор PATH:
. /etc/environment
Затем получить значение по умолчанию .bashrc
файл и поместите его обратно в вашу домашнюю папку:
sudo cp /etc/skel/.bashrc /home/$USER/.bashrc
sudo chown $USER:$USER /home/$USER/.bashrc
Надеюсь, это поможет!
Используя чистый bash, вы можете запустить поиск вещей с именем vim
:
$ shopt -s globstar
$ time echo /**/vim
/etc/alternatives/vim /etc/vim /usr/bin/vim /usr/bin/X11/vim /usr/share/cmake-3.5/editors/vim /usr/share/vim /var/lib/dpkg/alternatives/vim /var/lib/vim
real 0m4.145s
user 0m0.740s
Затем вы можете просмотреть результаты, чтобы увидеть, какие из них являются исполняемыми:
$ time for v in /**/vim; do [[ -x $v && -f $v ]] && echo "$v"; done
/etc/alternatives/vim
/usr/bin/vim
/usr/bin/X11/vim
Примечания:
/etc/alternatives/vim
- это альтернативная система в игре /usr/bin/X11/vim
появляется потому, что /usr/bin/X11
является символической ссылкой на /usr/bin
, поэтому все в последнем появляется в первом. Почему в / usr / bin / x11 бесконечно много подкаталогов x11? С различными сбоями в Ubuntu есть одна команда, которая может помочь с большим количеством вещи: /bin/busybox
. Помня только об этом, вы получаете доступ к гораздо большему:
$ /bin/busybox
BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --install [-s] [DIR]
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, adjtimex, ar, arp, arping, ash, awk, basename, blockdev,
brctl, bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod, chown, chpasswd,
chroot, chvt, clear, cmp, cp, cpio, crond, crontab, cttyhack, cut,
date, dc, dd, deallocvt, depmod, devmem, df, diff, dirname, dmesg,
dnsdomainname, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases,
echo, ed, egrep, env, expand, expr, false, fdisk, fgrep, find, fold,
free, freeramdisk, fstrim, ftpget, ftpput, getopt, getty, grep, groups,
gunzip, gzip, halt, head, hexdump, hostid, hostname, httpd, hwclock,
id, ifconfig, ifdown, ifup, init, insmod, ionice, ip, ipcalc, kill,
killall, klogd, last, less, ln, loadfont, loadkmap, logger, login,
logname, logread, losetup, ls, lsmod, lzcat, lzma, lzop, lzopcat,
md5sum, mdev, microcom, mkdir, mkfifo, mknod, mkswap, mktemp, modinfo,
modprobe, more, mount, mt, mv, nameif, nc, netstat, nslookup, od,
openvt, passwd, patch, pidof, ping, ping6, pivot_root, poweroff,
printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset, rev,
rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, sed, seq,
setkeycodes, setsid, sh, sha1sum, sha256sum, sha512sum, sleep, sort,
start-stop-daemon, stat, static-sh, strings, stty, su, sulogin,
swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar,
taskset, tee, telnet, telnetd, test, tftp, time, timeout, top, touch,
tr, traceroute, traceroute6, true, tty, tunctl, udhcpc, udhcpd, umount,
uname, uncompress, unexpand, uniq, unix2dos, unlzma, unlzop, unxz,
unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, watch,
watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat
Да, включая vi
.