我在/etc/profile.d/
中遇到了有關別名文件的問題。這並不重要。我只是感興趣,爲什麼它沒有按預期工作。命令在終端中工作,但不作爲配置文件中的別名。
所以基本上我在上面提到的路徑上有文件00-alias.sh
,我想做一個快捷方式來讀取文件的特定行。所以這是我的代碼:
alias lnn='sed -n "${1}p" < "${2}"'
與該代碼我應該能夠像
$ lnn 4 test.txt
但是執行命令,這是行不通的。我只是得到錯誤
-bash: : No such file or directory
現在我就想,好吧,也許相對路徑都無效,因爲該文件位於/etc/profile.d/00-alias.sh
所以我繼續做了一個路徑像
alias pwd2='echo $(pwd)'
新的別名,然後更新的profile.d與
source /etc/profile.d/00-alias.sh
而剛剛試過pwd2
,但它迴應了我當前的路徑。所以理論上可以使用我寫的命令找到該文件。我仍然試圖通過文件到我的別名與絕對路徑像
$ lnn 4 /var/test.txt
仍然同樣的錯誤如上。
但是,如果我在終端輸入別名的命令一樣
sed -n "4p" < test.txt
它完美的罰款。如果我把引號test.txt
在這裏,無論是另一個奇怪的事情:如果我寫
alias lnn='sed -n "${1}p" < ${2}'
不帶引號周圍${2}
我得到的錯誤
-bash: ${2}: ambiguous redirect
在終端它工作得很好...
那麼,我做錯了什麼?有沒有人有這個想法?我很想知道我的錯誤。但正如我所說,這不是一個真正的問題,因爲我只是好奇爲什麼bash的行爲如此。
如果您想傳遞變量,請使用其中的命令創建腳本,然後爲該腳本設置別名。然後您可以將變量傳遞給別名。 –