V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
icy20088
V2EX  ›  Linux

脚本设置 Alias 失败

  •  
  •   icy20088 · 2017-11-20 14:44:28 +08:00 · 2501 次点击
    这是一个创建于 2594 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我再系统上面穿件这个脚本,执行完毕之后没有抱错,但是别名设置没有出现在别名列表里面,谁能帮我指点迷津
    lterbsbj@bjlmrworker06:~> cat exuupei.sh
    #!/bin/bash

    alias cd_enb03='moshell 20.1.40.16'
    echo $?
    alias cd_enb1089='moshell 10.163.152.99'
    echo $?
    lterbsbj@bjlmrworker06:~> ./exuupei.sh
    0
    0
    lterbsbj@bjlmrworker06:~> alias |grep '^cd_'
    lterbsbj@bjlmrworker06:~> shopt |grep expand_aliases
    expand_aliases on
    3 条回复    2017-11-20 15:24:02 +08:00
    newkedison
        1
    newkedison  
       2017-11-20 15:05:24 +08:00
    source ./exuupei.sh 或者
    . ./exuupei.sh (注意前面有个“."和空格)
    参考: https://zh.wikipedia.org/wiki/._(Unix)
    icy20088
        2
    icy20088  
    OP
       2017-11-20 15:18:26 +08:00 via iPhone
    多谢多谢!真的可以,这是个什么原理
    icy20088
        3
    icy20088  
    OP
       2017-11-20 15:24:02 +08:00
    找到原因了!

    source 命令与 shell scripts 的区别是,source 在当前 bash 环境下执行命令,而 scripts 是启动一个子 shell 来执行命令。这样如果把设置环境变量(或 alias 等等)的命令写进 scripts 中,就只会影响子 shell,无法改变当前的 BASH,所以通过文件(命令列)设置环境变量时,要用 source 命令。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2709 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:05 · PVG 20:05 · LAX 04:05 · JFK 07:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.