在Linux中,如果我在包含別名的腳本中放入命令,我發現它不會被展開。我該如何解決這個問題?我正在使用bash。腳本中的別名
Q
腳本中的別名
2
A
回答
0
退房這篇文章,有你的答案: Alias inside script
4
根據該TLDP page about aliases,你需要使用線shopt -s expand_aliases
在你的代碼擴展的別名。下面的例子產生預期的輸出,但沒有禁用了javascript線只是印有「my_ls:找不到命令」:
#!/bin/bash
shopt -s expand_aliases
alias my_ls='ls -lrt'
echo "Trying my_ls"
my_ls
exit
+0
有趣的是,手冊頁甚至意味着需要shopt,但對於bash 3.2.39它默認打開。 – mvds 2010-08-06 14:47:13
1
如果你希望你的shell別名在腳本中可用,您必須手動包括他們。如果他們在~/.bashrc
定義,放線
. ~/.bashrc
腳本中#!/bin/sh
行之後。這將在腳本的上下文中執行.bashrc的內容。
0
啓用POSIX模式(如通過調用bash作爲sh
或命令(set -o posix) 2>/dev/null && set -o posix
應該做的伎倆。
即使這樣,要知道,別名擴展被解析,並分析和執行之間的次序是不好界定。例如
alias foo=echo; foo bar
或
{
alias foo=echo
foo bar
}
將嘗試運行foo
作爲別名尚未在解析時間定義。另外,在執行任何操作之前,一些shell會分析eval
或.
(源)的整個輸入。
所以在腳本中使用別名的唯一便攜和可靠的方法是定義它們,然後eval
或.
使用它們的代碼。
相關問題
- 1. shell腳本的別名
- 2. 腳本中的全球bash別名
- 3. shell腳本中的別名幫助
- 4. 使運行腳本別名
- 5. bash腳本和別名
- 6. 使別名腳本失敗
- 7. 在Fabric腳本中調用bash別名
- 8. 在shell腳本中不執行別名
- 9. 在別名中執行腳本
- 10. csh:識別腳本中的已知別名
- 11. 特定於腳本的jQuery別名
- 12. 在腳本#指定的jQuery別名
- 13. python創建系統別名到腳本
- 14. Bash別名不適用於Python腳本
- 15. Perl腳本不能從一個別名
- 16. WinDbg腳本解析雙引號別名
- 17. 使用別名執行腳本
- 18. 別名沒有一個bash腳本
- 19. 如何從shell腳本設置別名?
- 20. 使用別名來調用python腳本
- 21. 未從腳本設置Powershell別名
- 22. 通過使用參數調用腳本來創建腳本的別名:./myscript別名
- 23. 如何導入我的TCSH腳本中的別名
- 24. 如何獲取調用bash腳本的別名名稱
- 25. 確定文件位置是否是bash腳本中的別名
- 26. PHP腳本中特定行的PHP別名?
- 27. 另一個腳本中的命令別名
- 28. 從shell中丟失別名的腳本命令
- 29. Php腳本來查找/識別域名中的單詞
- 30. 函數而不是C shell登錄腳本中的別名
你能舉個例子嗎?什麼命令?你是如何走樣的? – Cfreak 2010-08-06 14:34:35
你應該使用函數而不是別名。然而GreenMatt的[答案](http://stackoverflow.com/questions/3424725/alias-in-a-script/3424805#3424805)是正確的。 – 2010-08-06 15:45:47