Как я могу найти, где находится исполняемый файл vim, когда мой PATH нарушен?

Похоже, я разбил свою систему после редактирования файлов /etc/environment и .bashrc.

Мой рабочий стол не запускается, и мне нужно исправить эти файлы. Но поскольку моя система не находит никаких команд, мне нужно использовать весь путь.

Где я могу найти исполняемый файл vim, чтобы запустить его с полным путем?

2
задан 15 December 2017 в 06:00

9 ответов

Кажется, что ваша переменная среды 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 - [ f15] находит все имена с похожим именем vim в имени. Обратите внимание: большинство результатов не являются исполняемыми файлами vim.

man which - найдите команду - он делает это, выполнив поиск в PATH для исполняемые файлы, соответствующие именам аргументов. man whereis - whereis затем пытается найти нужную программу в стандартных местах Linux и в местах, определенных параметрами $ PATH и $ MANPATH.
3
ответ дан 22 May 2018 в 17:01
  • 1
    или whereis, который проверяет стандартные каталоги (which проверяет каталоги в $PATH пользователя], поэтому в зависимости от того, как он настроен, некоторые местоположения могут быть пропущены) – Patrick Mevzek 13 December 2017 в 18:48
  • 2
    Не обновляйте свой ответ. whereis находит все имена с именем vim в имени. Я вижу один, который говорит /etc/vim, и если вы попытаетесь запустить его, он говорит, что это каталог. Whereis определяет, где находится исполняемый файл, который находится на пути. – Terrance 13 December 2017 в 18:54
  • 3
    Если which не работает, поскольку переменная PATH повреждена, whereis является полезной альтернативой. Начните искать в / bin и / usr / bin - вы найдете там большинство вещей, если вы еще не нашли своего exec, используйте whereis. – Soren A 13 December 2017 в 19:09
  • 4
    нашел vim, но не могу найти sudo, так как мне нужны разрешения. Где sudo? – vico 13 December 2017 в 19:14
  • 5
    Ни whereis, ни which не будут запущены, не зная их путь . Оба находятся в /usr/bin, где vim находится, поэтому, если vim не может быть найден, то они также не могут быть. – Olorin 15 December 2017 в 08:40

Кажется, что ваша переменная среды 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.
3
ответ дан 18 July 2018 в 01:16

Кажется, что ваша переменная среды 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.
3
ответ дан 24 July 2018 в 17:22

Поскольку ваш 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

Надеюсь, что это поможет!

3
ответ дан 22 May 2018 в 17:01
  • 1
    Это наилучшее возможное решение - сбросьте значение по умолчанию PATH для текущей оболочки. – Olorin 15 December 2017 в 08:41

Используя чистую 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.

2
ответ дан 22 May 2018 в 17:01

Используя чистую 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.

2
ответ дан 18 July 2018 в 01:16

Поскольку ваш 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

Надеюсь, что это поможет!

3
ответ дан 18 July 2018 в 01:16

Используя чистую 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.

2
ответ дан 24 July 2018 в 17:22

Поскольку ваш 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

Надеюсь, что это поможет!

3
ответ дан 24 July 2018 в 17:22
  • 1
    Это наилучшее возможное решение - сбросьте значение по умолчанию PATH для текущей оболочки. – Olorin 15 December 2017 в 08:41

Другие вопросы по тегам:

Похожие вопросы: