2013-10-17 130 views
0

我已經編寫了一個簡單的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命令。任何建議讓命令更新別名和環境變量?

下面是分配的截圖,所以你可以看到我必須滿足的要求: enter image description here

感謝您的時間和幫助。

+1

[你無法控制父外殼的環境](http://docstore.mik.ua/orelly/unix3/upt/ch24_04.htm),這導致我認爲或者1)'。 。/ testscript'就是他們正在尋找的東西,或者(2)你錯誤地理解了這個任務,或者(3)他們錯誤地闡述了這個任務(這是不太常見的,你認爲......)。我會添加'#!/ usr/bin/sh'作爲shebang而不是'#!/ usr/bin',這對我來說已經足夠'sh'了。 – Wrikken

+1

@Wrikken:正確的shebang是'#!/bin/sh',而不是(必然)'#!/ usr/bin/sh'。後者可能在某些系統上工作;前者實際上是有保證的。 –

+0

@KeithThompson:你絕對是對的,在這裏我只是一個腦筋急轉彎,明顯不合適的'#!/ usr/bin'。我站在糾正;) – Wrikken

回答

0

您在獨立腳本中設置的任何環境變量只能在該腳本中可見。相反,您需要將這些命令添加到~/.profile(或任何與您的系統相同的命令)。然後它們將在您登錄到命令行控制檯時執行。

+0

是的,通常我會在這裏或在.bashrc中設置環境變量。我發佈了作業的截圖,以便您瞭解我的限制。 – Matt

-1

shebang(第一行)不正確。

對於您的情況,您應該將第一行替換爲#!/bin/sh#!/bin/bash

只需在Google中搜索'shebang'即可。它基本上是啓動的可執行文件的絕對路徑。 http://en.wikipedia.org/wiki/Shebang_(Unix)

+0

-1雖然正確和適度相關,但這不是OP詢問的問題。 – tripleee