2013-11-14 86 views
0

我試圖找出是下面的命令的直接輸出:命令輸出位置

須藤,我-u SomeUser的/home/someuser/test.sh

test.sh腳本的內容:

echo "test" 

命令從另一個用戶的主目錄中調用。

+0

http://linux.die.net/man/8/sudo - 選中-i選項。你有沒有嘗試像someuser一樣運行命令?是以奇怪的方式建立的環境? – x29a

+0

'echo'只是打印到標準輸出,此處沒有任何內容表示它正在被重定向。除非您省略重要信息,否則輸出將發送到調用用戶的終端。 – tripleee

+0

當以某用戶身份運行時,命令的行爲與預期相同。我已經在我的本地PC上檢查過這個命令,並且沒問題。但是在遠程服務器上它是不同的。我注意到了這個命令:sudo -i -u someuser /home/someuser/test.sh什麼也不打印。然而,命令sudo -i -u someuser ./test.sh會打印預期的文本'test'。 – user882027

回答

1

找到這個最簡單的方法是用sudo運行pwd(1),儘管我會破壞它的樂趣,並揭示當使用'-i'開關執行sudo(1)時,工作目錄將被設置爲有效的用戶ID(=任何指定'-u'或根時,未指定)和沒有'-i'它將成爲當前目錄。

例子:

[email protected]:~/work/linux-3.11.7$ sudo -i -u games pwd 
[sudo] password for user: 
/usr/games 
[email protected]:~/work/linux-3.11.7$ sudo -u games pwd 
/home/user/work/linux-3.11.7 

所以,如果你重定向須藤的輸出(1)沒有指定一個完整的路徑某些文件,這就是你如何知道文件將被創建。