怎么把shell的/bin/bash改为/bin/sh

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把shell的/bin/bash改为/bin/sh相关的知识,希望对你有一定的参考价值。

该/etc/passwd的配置,把登录的默认shell改为/bin/sh就可以了。不过在我的系统里,sh链接到是bash,所以意义不大,如果是零时改改,直接在终端下输入sh就是sh了,查看当前使用什么shell可以使用命令:echo $0 参考技术A 你怎么改的?追问

我用chsh -s /bin/bash进行改的!!!

追答

你用的什么版本的linux?
chsh -s /bin/sh 有什么报错吗? 这条命令执行后,你退出系统,重新登录后
echo $SHELL 显示的应该就是/bin/sh啦。显示的还是/bin/bash是吗?

参考技术B /bin/sh 缺省就是bsh啊。你是什么意思呢?追问

我把shell的/bin/sh改为/bin/bash了,想改过来!但是没起效!

追答

[root@myserver bin]# ll sh
lrwxrwxrwx 1 root root 4 2009-11-12 sh -> bash
其实一般linux系统里面,/bin/sh 这个文件,就是/bin/bash的一个链接文件,你当然不能改。
而且如果你改了,会可能导致一些莫名的问题,因为linux里面很多内部管理的shell script。
这些shell script的开头,都注明是/bin/sh解释的,如果你没这个文件,那些shell script就运行不了了。
如果你想改回来,可以用下面命令
ln -s /bin/bash /bin/sh

追问

显示:ln:创建符号链接“/bin/sh”:文件已存在
这是咋回事?
sh -> bash:sh是指向dash的

追答

那就是文件存在呀。还有什么问题呢?

追问

但是用env命令查看:shell=/bin/bash/啊!

追答

shell=/bin/bash/ 很正常。你没这个文件吗? 这个才是真正的bsh解释程序。/bin/sh只是个链接文件。

怎么把shell后台输出赋值给变量

我有两个命令需要同时执行,输出结果赋值给两个变量,例子如下:
r0=`sleep 10;echo 10.0` &
r1=`sleep 10;echo 20.0` &
wait
echo $r0, $r1
结果显示:
,
怎么才能正常运行?

参考技术A 写一个a.sh脚本:

$ cat a.sh
#!/bin/bash

declare -i k
declare -i m
declare -a arr
k=0
m=0

rm -fr num.txt
touch num.txt
sleep 10;echo "10.0" >> num.txt; &
sleep 10;echo "20.0" >> num.txt; &
wait

while read line
do
arr[$k]=$line
((k++));
done < num.txt

while [ $m -lt $k ]
do
echo $arr[$m]
((m++))
done

运行它:
$ chmod +x a.sh

$ a.sh (或者 ./a.sh)
10.0
20.0

谢谢。因为不了解你的详细情况和需求。仅供参考。本回答被提问者和网友采纳

以上是关于怎么把shell的/bin/bash改为/bin/sh的主要内容,如果未能解决你的问题,请参考以下文章

linux的shell编程中#!/bin/sh和bash是啥意思?

linux的shell编程中#!/bin/sh和$bash是啥意思?

[求助]adb shell chmod 4777 /system/bin/su

bin/false和/sbin/nologin的区别

linux中:由于/bin不在PATH环境变量中,故无法找到该命令的解决办法

为啥linux 的 source命令在linux的脚本中没有作用 我使用了#!/bin/sh以及#!/bin/bash 都不好用