sudo cd为什么不能够执行以及解决办法

综合:https://blog.csdn.net/gatieme/article/details/49106865
https://blog.csdn.net/u014717036/article/details/70338463

问题描述

我想要cd到/etc/docker,但是它给我一个权限不够的错误,然后,我想到使用sudo cd /etc/docker时,它告诉我sudo: cd:找不到命令。

于是,郁闷的我就去上网找了下原因。

问题分析

shell

shell是一个命令解析器

所谓shell是一个交互式的应用程序。

shell执行外部命令的 时候,是通过fork/exec叉一个子进程,然后执行这个程序。

sudo

sudo 是一种程序,用于提升用户的权限,在linux中输入sudo就是调用sudo这个程序提升权限
sudo的意思是,以别人的权限叉起一个进程,并运行程序。

cd

cd是shell的内部命令。
也就是说,是直接由shell运行的,不叉子进程。
你在当前进程里当然不能提升进程的权限(其实也可以,不过得编程的时候写到代码里,然后再编译,而我们的 shell没有这个功能,否则岂不是太危险了?黑客.sh

cd不是一个应用程序而是Linux内建的命令,而sudo仅仅只对应用程序起作用。

sudo foo只意味着以root权限运行foo程序

所以,sudo cd /etc/docker会报sudo: cd:找不到命令。

验证


> type cd
cd is a shell builtin

注意,关于cd是不是内建命令,OS X 10.8中cd不是内建命令(可以参考what-is-the-point-of-the-cd-external-command),具体其他的版本的OS X我就不清楚了,大部分的Linux系列(Ubuntu、CentOS和ArchLinux)中cd都是内建命令

解决方法

  • 使用sudo -i命令提升用户权限
> sudo -i
> cd /etc/docker
  • 使用sudo -s命令打开特殊shell

> sudo -s
> cd /etc/docker

上面都可以使用exit命令退出,也可以使用Ctrl+D快捷键退出

提升权限后就可以执行命令了

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值