技术解析

脚本设置 Alias 失败
0
2021-06-28 08:23:11
idczone
我再系统上面穿件这个脚本,执行完毕之后没有抱错,但是别名设置没有出现在别名列表里面,谁能帮我指点迷津
[email protected]:~> cat exuupei.sh
#!/bin/bash

alias cd_enb03='moshell 20.1.40.16'
echo $?
alias cd_enb1089='moshell 10.163.152.99'
echo $?
[email protected]:~> ./exuupei.sh
0
0
[email protected]:~> alias |grep '^cd_'
[email protected]:~> shopt |grep expand_aliases
expand_aliases on
source ./exuupei.sh 或者
. ./exuupei.sh (注意前面有个“."和空格)
参考: https://zh.wikipedia.org/wiki/._(Unix)

多谢多谢!真的可以,这是个什么原理

找到原因了!
source 命令与 shell scripts 的区别是,source 在当前 bash 环境下执行命令,而 scripts 是启动一个子 shell 来执行命令。这样如果把设置环境变量(或 alias 等等)的命令写进 scripts 中,就只会影响子 shell,无法改变当前的 BASH,所以通过文件(命令列)设置环境变量时,要用 source 命令。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服