`

ubuntu写shell 函数报错

阅读更多
#!/bin/bashfunction sayIt {   
   echo "hello world"}

sayIt

This returns "hello world" on my laptop, but on my Desktop it returns:

run.sh:3:function not found 
hello world  
run.sh:5:Syntax error:"}" unexpected

从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。

ubuntu edgy是第一个将dash作为默认shell来发行的版本,这似乎是受了debian的影响。wiki 里面有官方的解释,https://wiki.ubuntu.com/DashAsBinSh,主要原因是dash更小,运行更快,还与POSIX兼容。

但目前存在的问题是,由于shell的更换,致使很多脚本出错,毕竟现在的很多脚本不是100%POSIX兼容。

在wiki里面也说到,如何将默认的shell改回bash,方法就是

在终端执行 sudo dpkg-reconfigure dash

然后选择 no。

 

 

分享到:
评论

相关推荐

    使用Ubuntu 22.04.2 LTS编写shell脚本(上)

    Shell脚本支持条件语句(if/else)、循环(for/while)、函数以及系统命令和环境变量的使用。例如,`if`语句用于根据条件执行不同的代码块,`for`循环则可用于遍历列表或执行固定次数的操作。环境变量是系统级别的...

    nologin命令 限制用户登录

    与该功能相关的Linux命令:readonly命令 – 标记shell变量或函数为只读vipw命令 – 编辑某些配置文件dpkg-split命令 – 分割软件包resize命令 – 设置终端机视窗的大小source命令 – 在当前Shell环境中从指定文件...

    zshell

    在大多数现代Linux发行版和macOS上,可以通过包管理器安装Zshell,例如在Ubuntu或Debian上: ```bash sudo apt-get install zsh ``` 在macOS上,可以使用Homebrew: ```bash brew install zsh ``` 安装完成后,...

    sh代码-ubuntu 常用命令

    "sh代码-ubuntu常用命令"这个主题主要是关于使用Bash shell脚本(以`.sh`为扩展名)来执行Ubuntu系统中的常见命令。Bash是Unix和Linux系统中最常用的shell,它提供了丰富的命令行工具和自动化脚本编写能力。 首先,...

    libssh2_1.8.0.orig.tar.gz

    本文将重点探讨基于SSH2协议的C函数库——libssh2,以及它在Linux系统,特别是Ubuntu环境中的应用。 libssh2是一个开源项目,其目标是为开发者提供一个简单易用的接口,以便在各种软件中集成SSH2功能。这个库支持...

    Linux Shell脚本系列教程(二):终端打印命令详解

    - 要在`echo`中使用转义序列(如 `\t` 表示制表符),可以使用 `-e` 选项,但在Ubuntu 14.04中,这个选项可能是不必要的。 **打印彩色输出** 在终端中使用转义序列可以实现彩色输出,这对于调试和显示重要信息非常...

    linux新手管理员指南CHM

    10. **Shell脚本编程**:入门Bash shell脚本,学习变量、条件语句、循环和函数的使用,以便自动化日常任务。 11. **远程访问**:学习使用SSH(Secure Shell)进行远程登录和文件传输,以及设置SSH密钥对免密码登录...

    RVM配置ROR

    - 将RVM添加到shell启动文件中,确保每次打开新的终端时都能加载RVM环境。 - 使用`source ~/.bashrc`命令使更改立即生效。 4. **安装Ruby版本** - 安装Ruby 1.8.7和Ruby 1.9.2版本,这两个版本是Rails 2.x和...

    Linux系统故障诊断与排除

    2. **错误代码解析**:当系统或应用报错时,通常会提供一个错误代码,比如`errno`,查阅相关文档或在线搜索可了解其含义。 3. **系统监控**:利用`top`、`htop`、`iotop`、`vmstat`、`iostat`、`free`等命令实时...

Global site tag (gtag.js) - Google Analytics