【问题标题】:Execute Command From String Dash Linux从 String Dash Linux 执行命令
【发布时间】:2013-04-07 05:28:41
【问题描述】:

所以我正在尝试学习如何为 Linux 操作系统编写脚本,所以我编写了这个下载和安装脚本。虽然,我知道任何优秀的 linux 编码器都会认为这绝对是个简单的工作,但到目前为止它的工作正常,所以我现在只有一个错误。

代码:

#!/bin/sh
###################################
#Lystics Core Linux Code v1       #
#                                 #
# Starting Date 4/14              #
#                                 #
# Ending Date ~                   #
#                                 #
###################################


clear

#Define Veriables
dir='./LysticsCode/'
url='http://lysticscode.host-elite.com/Linux/Bash%20Scripts/LCode.sh'
file=$(basename "$url")

echo LysticsCode for Linux v1 Installer
echo
read -r -p "Are you sure you wish to install? [Y/n] " a
if [ "$a" = 'n' -o "$a" = 'N' ]; then


#Not going to install
echo 'Exiting The Installation. Thank You! =D'
exit 1;
else
#Set up screen
clear
echo LysticsCode for Linux v1
echo First Installation
echo ''
#Installing
echo Downloading Packages...
curl -o "$dir$file" "$url"
echo ''
echo ''
echo 'Download Complete!'
eval "alias lcode=/root/LysticsCode/Main.sh"
exit 1;
fi


#End Script
$SHELL

我想要做的是添加一个命令别名,这样可以更轻松地访问已安装的文件。我尝试使用 eval "alias lcode=DIR" 并没有用。与 $(alias lcode=dir) 相同

谁能帮忙?

【问题讨论】:

    标签: linux bash terminal eval dash-shell


    【解决方案1】:

    别名不会继承给子进程。您不应该在脚本末尾调用子 shell,而是说将脚本保存到名为 myenv.sh 的文件中,在当前 shell 中执行脚本:

    . myenv.sh
    

    【讨论】:

    • 但是如果用户在文件不在的目录中,那么 at 命令将不起作用。但是,如果我要为位于 /root/LysticsCode/Main.sh 的文件创建一个别名,那么用户所在的目录将无关紧要
    【解决方案2】:
    $source /root/LysticsCode/Main.sh
    

    会起作用的。

    【讨论】: