Linux下Bash自定义脚本默认临时?如何永久保存自定义脚本?
问题:Bash自定义mcd函数重启后失效,如何永久保存?
我在Bash中创建了名为mcd的函数,可直接在命令行使用,但重启Linux后无法调用,想问这类函数默认是否为临时的,有没有方法永久保存自定义脚本?
初始操作
hanyuchi@TABLET-1DDNDEN4:~$ mcd () { > mkdir -p "$1" > cd "$1" > } hanyuchi@TABLET-1DDNDEN4:~$ mcd example2 hanyuchi@TABLET-1DDNDEN4:~/example2$ cd .. hanyuchi@TABLET-1DDNDEN4:~$ tree . ├── UTF-8 ├── brightness ├── example ├── example2 ├── last-modified.txt ├── one │ └── a └── two └── b 4 directories, 5 files
系统重启后
hanyuchi@TABLET-1DDNDEN4:~$ mcd example3 Command 'mcd' not found, but can be installed with: sudo apt install mtools
解答
直接在命令行定义的函数是临时的,仅存在于当前Shell会话中,重启系统或新开终端后就会消失——因为这些定义不会自动写入持久化配置文件。
方法一:写入Bash用户配置文件
- 打开用户Bash配置文件(常用
~/.bashrc):nano ~/.bashrc - 在文件末尾添加mcd函数:
mcd () { mkdir -p "$1" cd "$1" } - 保存退出后,让配置立即生效:
source ~/.bashrc
之后重启终端或系统,函数会自动加载。
方法二:做成独立可执行脚本
- 创建
mcd脚本文件,内容如下:#!/bin/bash mkdir -p "$1" cd "$1" - 给脚本添加可执行权限:
chmod +x mcd - 将脚本移到用户可执行目录(比如
~/.local/bin,无需sudo):
如果mv mcd ~/.local/bin/~/.local/bin不在你的环境变量PATH中,先把它加到~/.bashrc:echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
这种方式下,mcd会像系统命令一样全局可用。
内容的提问来源于stack exchange,提问作者hyc050104
相关产品推荐
相关产品推荐

