我重新安装了 ns2,但没有从文件系统中删除路径为以下的文件:
/usr/bin/ns
因此,当我在终端上输入时:
which ns
我得到:
/usr/bin/ns
而不是我设置的路径:
/home/me/ns-allinone-2.35/bin/ns
这是在我的 home 目录中me
。我该如何删除文件系统中具有类似名称的文件?此文件的属性在权限中显示我不拥有此文件,因此我无法更改权限。
如果路径设置不正确,我将无法运行我的 tcl 脚本,要设置路径,我需要删除重复的ns
。如何获得删除权限?如何使用我的终端删除它?
答案1
不是必需的您删除该文件/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
in~/.bashrc
或类似文件,您可以围绕 tcl 脚本创建一个 bash 脚本包装器,该包装器首先修改路径。如下所示:
#!/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 权限那OS,并删除该文件;
- 你执行某种漏洞(如果您没有该机器,我不建议您这样做!)
基本上,“如何删除我没有权限删除的文件”是一个引导性问题:这个问题假设机器的所有者想要删除此文件,然后想要给予你许可。如果机器的所有者不是你,你根本就不应该问这个问题,我们也不会帮你破坏或侵入别人的机器。这就像问“我没有钥匙,怎么在街上开这辆车?”——是的,祝你好运。
答案2
快速浏览一下我自己的/usr/bin/
目录,发现该目录归 root 所有。假设您可以使用sudo
或su
,rm
作为root
或使用chown
将其更改为您的用户名或组。
只需发出命令即可成为 root 用户su
。在大多数终端中,您会看到提示符从 $ 变为 #,表示您当前以 root 身份登录到终端。请确保在以 root 身份完成操作后exit
立即退出,以免无意中发出具有如此高文件系统访问权限的其他命令,这可能会导致您损坏文件系统。从那里您可以rm
使用/usr/bin/ns
。
这更安全路线是使用该sudo
命令允许以 root 身份为该实例运行命令,方法是发出rm
以下命令:
sudo rm /usr/bin/ns
答案3
@allquixotic 完全正确。你不能删除文件,如果你没有权限这样做,唯一的方法是得到通过使用漏洞或类似方法获取权限,sudo
如果您有权限的话。这就是文件系统权限的全部意义所在。
现在,您可以使用另一种方法来解决这个问题,即设置别名。打开 shell 的初始化文件(~/.bashrc
如果您正在使用bash
)并添加以下行:
alias ns='/home/me/ns-allinone-2.35/bin/ns'
Bash 别名被评估前搜索$PATH
,因此这将使ns
命令默认指向您本地安装的版本。