我已經編寫了一個簡單的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