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文件:
在文件末尾添加这一行(把你的脚本目录放到PATH最前面,优先查找):nano ~/.bashrc
要是担心脚本名和系统自带命令重名,可以把目录放到PATH末尾:export PATH="$HOME/myScripts:$PATH"export PATH="$PATH:$HOME/myScripts",这样系统会先找自带命令。 - 最后让修改立即生效,不用重启终端:
现在直接输入脚本名(比如source ~/.bashrcx)就能运行对应的脚本啦!
方法二:保留
.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 ~/.bashrcx,系统如果找不到x命令,就会自动尝试运行$HOME/myScripts/x.sh,完全满足你的需求!
内容的提问来源于stack exchange,提问作者Arcticooling
相关产品推荐
相关产品推荐

