我已经编写了一个简单的shell脚本,它将一些别名添加到它作为学校作业的一部分执行的shell中。下面是该文件testscript.txt
内容:sh命令不调用shell脚本
#!/usr/bin
alias dir="ls -l"
alias alerts="cat /etc/motd"
PS1="What next Matt ? "
当我使用下面的命令:
sh testscript.txt
的命令似乎运行,因为返回任何错误,但是,别名和命令提示变量具有没有被改变。
我知道脚本正常工作,因为我曾尝试以下三种备选方案,其中所有的工作顺利:
. ./testscript.txt
. testscript.txt
source testscript.txt
的任务要求我使用sh
命令。任何建议让命令更新别名和环境变量?
下面是分配的截图,所以你可以看到我必须满足的要求:
感谢您的时间和帮助。
[你无法控制父外壳的环境](http://docstore.mik.ua/orelly/unix3/upt/ch24_04.htm),这导致我认为或者1)'。 。/ testscript'就是他们正在寻找的东西,或者(2)你错误地理解了这个任务,或者(3)他们错误地阐述了这个任务(这是不太常见的,你认为......)。我会添加'#!/ usr/bin/sh'作为shebang而不是'#!/ usr/bin',这对我来说已经足够'sh'了。 – Wrikken
@Wrikken:正确的shebang是'#!/bin/sh',而不是(必然)'#!/ usr/bin/sh'。后者可能在某些系统上工作;前者实际上是有保证的。 –
@KeithThompson:你绝对是对的,在这里我只是一个脑筋急转弯,明显不合适的'#!/ usr/bin'。我站在纠正;) – Wrikken