嘿伙计们,我只是想知道为什么这个下面的命令不起作用:
Nicholass-MBP:~ nicholasmaddren$ sudo cd ~/.ssh
因此,我在终端内运行此命令,尝试访问包含我的一个私钥的 .shh 文件夹。
然后我运行 pwd 以确保我位于此文件夹中:
Nicholass-MBP:~ nicholasmaddren$ pwd
然而,我得到的结果是,我不在那个目录中,所以我无法选择我的 SHH 密钥。
/Users/nicholasmaddren
有人可以为我解释一下这个问题吗?我将非常感激。
谢谢,尼克
答案1
只是好奇。你为什么首先要使用 sudo 进入主目录中的文件夹?Sudo 用于访问不属于你的文件夹,以及其他用途(超级用户可执行的操作)...
答案2
(这个答案不是针对 Mac OSX 的,而是针对 BSD/Unix 的工作方式。由于 Mac OSX/Darwin 基于 BSD/Unix,因此预计这对您适用并且工作正常,也适用于其他 Unix。)
是的...您报告的结果正是预期的。
事情是这样的:你运行了“sudo”。“sudo”命令试图运行“cd ~/.ssh”,但可能失败了,因为“cd”是一个内部命令。要使该命令工作,但无法完成你试图做的事情,你可以使用:
sudo -c ${SHELL} “cd ~/.ssh”然后,sudo 命令退出,因此您回到当前目录,并得到您不想要的结果。
您应该可以访问自己的主目录,因此您的解决方案是删除单词“sudo”,这可以帮助您获得权限。如果您尝试访问其他用户的目录,则可能需要创建一个子 shell,因此您可以使用:
sudo -c ${SHELL} “cd ~anotherUser/.ssh”
然后,您的提示符可能会更改为 # 而不是 $,因为 sudo 赋予了您超级用户权限。当您完成“rootly”操作后,键入“exit”以将您的提示符更改回非特权,显示 $ 而不是 #。