Ubuntu

cp 錯誤消息在 Ubuntu 12.04(?) 和 Fedora 24 上使用不同的引用

  • June 2, 2017

我在 F24 上開發並且我的測試通過了,但是當我在 Travis CI 中嘗試它們時,它們失敗了。AFAIK,他們(Travis CI)使用 Ubuntu 12.04 虛擬機。該測試將執行的輸出與先前收集的“黃金”輸出進行比較,並將任何差異標記為失敗。

在這種特殊情況下,會出現差異,因為cp對不存在的文件呼叫命令會產生錯誤消息,但兩個系統之間的錯誤消息略有不同。在 Fedora 24 上,我得到:

$ cp foo bar
cp: cannot stat 'foo': No such file or directory

在 Ubuntu 12.04 VM(設置為模擬 Travis CI 環境)上,我得到:

$ cp foo bar
cp: cannot stat `foo': No such file or directory

注意 Ubuntu 輸出中的反引號,而不是 F24 輸出中的單引號。

我試過export LC_ALL=C了,但這對任何一個輸出都沒有任何作用。F24 具有 8.25 版的 coreutils(其中包含 ls 輸出中臭名昭著的引用文件名更改,但這與我的問題無關)。Ubuntu 12.04 有 8.13 版本。

我的問題:

  1. 這是 8.13 和 8.25 之間 coreutils 的變化嗎?或者 Fedora 和 Ubuntu 是否以不同的方式編譯 coreutils?

  2. 最新的 Ubuntu 版本是否在此(可能還有其他)錯誤消息中使用反引號?

  3. 有沒有辦法設置錯誤消息中使用的引號?在任一系統上?

4)在與“gold”輸出進行比較之前,我可能會修改命令的輸出並將任何反引號更改為單引號。對更好的方法有什麼建議嗎?

編輯:我被告知我可以在 Travis CI 環境中執行更新版本的 ubuntu(將“dist:trusty”添加到.travis.yml)。該版本 (16.04) 在 en_US.UTF-8 環境中使用 Unicode 單引號 (codepoint #x2018) 作為錯誤消息中的開始和結束引號;它在 C 語言環境中使用 ASCII 撇號——這對我的目的來說已經足夠了。

$$ Edited the question to add this information but adding it as an answer just to close it out. It’s still not clear to me why 12.04 uses a backtick, but with the more recent version being available, that question seems moot. $$ 我被告知我可以在 Travis CI 環境中執行更新版本的 ubuntu(添加“dist: trusty”到.travis.yml)。該版本 (16.04) 在 en_US.UTF-8 環境中使用 Unicode 單引號 (codepoint #x2018) 作為錯誤消息中的開始和結束引號;它在 C 語言環境中使用 ASCII 撇號——這對我的目的來說已經足夠了。

引用自:https://unix.stackexchange.com/questions/364004