Вам не нужно удалять файл /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 в этой ОС и удалить файл;
- Вы выполняете какой-то эксплойт (я не рекомендую этого, если у вас нет машины!)
По сути, «как удалить файл, у которого нет разрешения на удаление» - это загруженный вопрос: вопрос предполагает, что владелец машины хочет, чтобы вы удалили этот файл, и хочет дать вам разрешение. Если владельцем машины является не вы, вам не следует даже задавать этот вопрос, и мы не поможем вам взломать или вторгнуться в чужую машину. Это все равно, что сказать: «Как мне водить эту машину на улице, когда у меня нет ключей?" -- Да, удачи с этим.