sh: 1: source: not found on ubuntu

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/windy135/article/details/81625018

bash、dash(/bin/bash和/bin/sh)介绍:
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三种shell各有优缺点。Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。

GNU/Linux 操作系统中的 /bin/sh 是 bash(Bourne-Again Shell)的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash(Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Ubuntu 号称自从他们在 6.10 版里这样做了以后,系统启动速度有了明显的提升。Debian 计划在下一个发行版(代号 lenny)中也将 dash 作为默认的 /bin/sh

问题:
最近在搞flask项目时,将所有环境密码都写入环境变量,本地运行OK,但是放到Ubuntu机器上,发现读不出环境变量,但是echo $NAME 正常。

原因说明:
1、Ubuntu系统中,默认使用的shell是/bin/dash,它不支持source命令;
2、由于大多数shell都是使用的/bin/bash,因此简单粗暴,直接改变shell运行环境

解决方案:
$ls -l which sh
/bin/sh -> dash

$sudo dpkg-reconfigure dash #选择No
[...]

$ls -l `which sh`
/bin/sh -> bash

猜你喜欢

转载自blog.csdn.net/windy135/article/details/81625018
今日推荐