2

Я переустановил ns2, но не удалил файл из файловой системы с путем:

/usr/bin/ns

Поэтому, когда я печатаю на своем терминале:

which ns

Я получил:

/usr/bin/ns 

Вместо пути, который я установил, это:

/home/me/ns-allinone-2.35/bin/ns

Это в моем домашнем каталоге me . Как мне удалить файл в файловой системе с похожим именем? В свойствах этого файла в разрешениях указано, что я не являюсь владельцем этого файла, поэтому я не могу изменить разрешения.

Я не могу запустить свои tcl-скрипты, если путь не указан правильно, и для его установки мне нужно удалить дубликаты ns . Как получить разрешение на удаление? А как его удалить используя мой терминал?

3 ответа3

7

Вам не нужно удалять файл /usr/bin/ns , чтобы указать, which и exec автоматически выполнят /home/me/ns-allinone-2.35/bin/ns .

Все, что вам нужно сделать, это поместить /home/me/ns-allinone-2.35/bin в $PATH перед /usr/bin .

Вот неправильный способ сделать это:

export PATH="${PATH}:/home/me/ns-allinone-2.35/bin"

В этом случае /usr/bin (по умолчанию в $PATH) будет находиться в расширении $PATH раньше, чем вы хотите, поэтому вы будете выполнять /usr/bin/ns когда будете запускать ns или which ns .

Вот правильный способ сделать это:

export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"

Теперь, просто набрав ns или which ns будут указывать на тот, который вы хотите, без необходимости что-либо удалять.

Обновление: если вы хотите, чтобы избежать изменения $PATH в ~/.bashrc или аналогичном, вы можете создать оболочку bash-сценария вокруг вашего tcl-сценария, которая сначала изменяет путь. Что-то вроде этого:

#!/bin/bash
export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"
tcl ...

Если вы все равно хотите удалить /usr/bin/ns , и у вас нет доступа к учетной записи root или возможности sudo (или поместить себя в файл /etc/sudoers ), а /usr/bin/ns принадлежит пользователю root и недоступна для записи, поэтому у вас больше нет возможностей удалить этот файл, если только:

  • Вы можете загрузить компьютер в другую операционную систему (live CD, live USB и т.д.), Получить root в этой ОС и удалить файл;
  • Вы выполняете какой-то эксплойт (я не рекомендую этого, если у вас нет машины!)

По сути, «как удалить файл, у которого нет разрешения на удаление» - это загруженный вопрос: вопрос предполагает, что владелец машины хочет, чтобы вы удалили этот файл, и хочет дать вам разрешение. Если владельцем машины является не вы, вам не следует даже задавать этот вопрос, и мы не поможем вам взломать или вторгнуться в чужую машину. Это все равно, что сказать: «Как мне водить эту машину на улице, когда у меня нет ключей?" -- Да, удачи с этим.

1

Быстрый взгляд на мой /usr/bin/ показывает, что каталог принадлежит пользователю root. Предполагая, что вы можете использовать sudo или su , либо rm от имени пользователя root либо используйте chown чтобы изменить его на свое имя пользователя или группу.

Вы можете стать пользователем root, просто введя команду su . В большинстве терминалов вы увидите быстрое изменение с $ на #, указывающее, что вы в настоящий момент вошли в терминал как root. Убедитесь , что , когда вы закончите как корень вы exit сразу, чтобы случайно не выдать другие команды с таким повышенным доступом к файловой системе , которая может привести к вы делаете повреждение файловой системы. Оттуда вы можете использовать rm в /usr/bin/ns .

Более безопасный путь - использовать команду sudo чтобы разрешить запуск команды от имени root только для этого экземпляра, введя команду rm следующим образом:

sudo rm /usr/bin/ns

1

@allquixotic абсолютно прав. Вы не можете удалить файл, если у вас нет разрешений на это, и единственный способ - получить разрешения с помощью эксплойта или с помощью чего-то вроде sudo если у вас есть права. В этом весь смысл разрешений файловой системы.

Теперь другой подход, который вы можете использовать, чтобы обойти это, - создать псевдоним. Откройте файл инициализации вашей оболочки (~/.bashrc если вы используете bash) и добавьте следующую строку:

alias ns='/home/me/ns-allinone-2.35/bin/ns'

Псевдонимы Bash оцениваются перед поиском в $PATH поэтому команда ns по умолчанию указывает на вашу локально установленную версию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .