if: Expression Syntax. then: Command not found

当执行source命令时遇到'if: ExpressionSyntax.then: Command not found'错误,导致.bashrc中的自定义命令失效。原因是终端默认使用的是sh,而非bash。通过执行'exec bash'可临时切换到bash,但新终端仍会回到sh。永久解决方案是修改用户默认shell为bash,使用'sudo chsh -s /bin/bash 用户名'命令。这样做是因为sh是bash的精简版,资源占用少,但缺少bash的一些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原始问题:在执行source xxx时,出现if: Expression Syntax. then: Command not found;

连锁问题:.bashrc中的自定义命令等不生效;

原因:打开终端中默认是/bin/sh,bash shell未激活,激活bash shell可以用:

exec bash

但是只在当前这个打开的终端生效,打开新的终端依旧是无效的;

终极解决方法:将用户打开的终端由默认的/bin/sh更改为bash。这样即使在重启后,打开的终端也默认是bash。

sudo chsh -s /bin/bash 用户名

为什么终端默认是sh而不是bash?

sh可以看作是bash的简化版,由于bash过于复杂和庞大,同时也占用了更多的资源,所以终端打开时默认是更小的sh

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值