You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu16.04:如何为目录脚本创建全局别名(省略.sh后缀)

当然可以!完全不用费劲给每个脚本单独加别名,有两个实用的办法能解决这个问题,我给你详细说下:

方法一:重命名脚本+添加目录到PATH(最简洁高效,推荐)

这是Linux系统里最常规的做法,操作起来也最简单:

  • 首先确保所有脚本都有可执行权限,不然加了路径也运行不了:
    chmod +x "$HOME"/myScripts/*.sh
    
  • 如果你不想手动一个个改文件名,可以批量去掉.sh后缀:
    cd "$HOME/myScripts"
    for file in *.sh; do mv -- "$file" "${file%.sh}"; done
    
  • 接下来把你的脚本目录添加到PATH环境变量里,这样shell就能自动找到这些脚本。打开你的~/.bashrc文件:
    nano ~/.bashrc
    
    在文件末尾添加这一行(把你的脚本目录放到PATH最前面,优先查找):
    export PATH="$HOME/myScripts:$PATH"
    
    要是担心脚本名和系统自带命令重名,可以把目录放到PATH末尾:export PATH="$PATH:$HOME/myScripts",这样系统会先找自带命令。
  • 最后让修改立即生效,不用重启终端:
    source ~/.bashrc
    
    现在直接输入脚本名(比如x)就能运行对应的脚本啦!
方法二:保留.sh后缀,通过bash函数自动匹配

如果不想修改脚本的文件名,我们可以借助bash的command_not_found_handle函数来实现——当你输入的命令系统找不到时,自动去你的脚本目录找带.sh后缀的文件:

  • 同样先给脚本加可执行权限:
    chmod +x "$HOME"/myScripts/*.sh
    
  • 打开~/.bashrc,把下面这段代码加到文件末尾:
    # 自定义命令处理:找不到命令时尝试匹配myScripts里的.sh脚本
    command_not_found_handle() {
        local script_path="$HOME/myScripts/$1.sh"
        if [ -x "$script_path" ]; then
            "$script_path" "${@:2}"
            return $?
        fi
        # 如果还是找不到,显示默认的错误提示
        printf "%s: command not found\n" "$1" >&2
        return 127
    }
    
  • 生效修改:
    source ~/.bashrc
    
    现在你输入x,系统如果找不到x命令,就会自动尝试运行$HOME/myScripts/x.sh,完全满足你的需求!

内容的提问来源于stack exchange,提问作者Arcticooling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:34:29