
正文
linux基础命令失效 linux命令全部失效
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux中的test命令失效现象
不是test失效, 而是 test 命令没有得到足够的参数.
原因是shell 在解释命令时, 会"先"对命令行进行扩展, 使用变量实际的值替换到命令行中, 然后再执行命令.
上面unset name后, $name的值为空, 执行完命令行扩展后, 实际执行的是
test -z echo "empty" || echo "not empty"
此时, shell 实际传给test 命令的参数只有一个 "-z", 这种情况下, test 的退出码总是0
所以在执行的时候, 使用双引号将变量名引起来是个好习惯, 这样命令行扩展后实际传给test的参数为2个(尽管第2个只是一个空字符串)
关于shell 的命令行扩展, 除了变量, 还有一些其它的工作,
见下例: a.sh
#!/bin/bash
echo $#
echo $@
执行 ./a.sh a{1,2,3} 输出为
./a.sh a{1,2,3}
3
a1 a2 a3
看起来是传给命令行一个参数 a{1,2,3}, 实际上执行完shell 扩展后, 传给a.sh 的参数是 a1 a2 a3 共3个参数.
关于shell 扩展的更多细节, 详见bash 的man page的 EXPANSION 这一节.
相关问答
Q1: 为什么新安装的linux很多常用命令无法使用
是root用户还是普通用户
如果是root用户下linux基础命令失效,检查这些命令是否还在。一般在/usr/bin /usr/sbin。
在/root用户下linux基础命令失效的.profile 文件中加上 path=/usr/binlinux基础命令失效;/usr/sbin ,然后source .profile,使变量生效,然后测试命令是否可用
如果是普通用户,需要在普通用户的home目录下设置.profile
Q2: 我的linux很多命令都无法使用了!
是root用户还是普通用户
如果是root用户下linux基础命令失效,检查这些命令是否还在。一般在/usr/bin /usr/sbin。
在/root用户下linux基础命令失效的.profile 文件中加上 path=/usr/binlinux基础命令失效;/usr/sbin linux基础命令失效,然后source .profile,使变量生效,然后测试命令是否可用
如果是普通用户,需要在普通用户的home目录下设置.profile
Q3: linux 所有命令不能使用的问题,估计环境变量没加对
命令不能用了主要是$PATH变量错误的关系。
方法一:
如果只是在shell下
export
命令改的名字的话
直接restart。
方法二:
更改配置文件linux基础命令失效,可以
/bin/vi
配置文件就行了linux基础命令失效,也就是要通过指定命令所在路径来运行命令修复配置就行了。
一般可能是在更改$PATH时命令错误搞成的的这种情况linux基础命令失效,
比如想增加/b
进path
export
PATH=$PATH:/b
OR
export
PATH=/b:$PATH
单独
export
PATH=/b
会使你其他PATH全部消失
只剩下
/b
$PATH:/b
和
export
PATH=/b:$PATH
区别是搜索顺序不同。
Q4: linux系统中各种命令失效是什么原因
问题描述不够清楚,执行命令返回什么结果,还有是哪个版本linux基础命令失效的Linux。 多半是你linux基础命令失效的环境变量出问题了。 echo $PATH 看看是否包含了 /bin /sbin /usr/bin 这些目录
关于linux基础命令失效和linux命令全部失效的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







