為什麼.bashrc中的alias別名不能用於指令碼中和Makefile
下週高階計算機網路課要復現並且彙報A會文章,成功復現就能拿A。我選了篇sketch的,sliding sketch, SIGKDD 20’。
沒想到編譯發現一定要stdc++11,一堆錯誤。挨個改Makefile確實可以,但是太費勁,所以想在.bashrc裡面加個alias別名,
g++='g++ -std=c++11'
沒想到一點用都沒有。所以還是改了回去。使用自己寫的指令碼測試發現,alias在shell指令碼中用不了,發現因為如下原因。
簡要說,是因為shell分為互動模式和非互動模式,指令碼執行時預設是非互動,普通命令列預設是互動,而alias在非互動模式下預設是無法使用的,需要使用shopt命令支援expand_aliases才行。
但是我發現即便使用了shopt,在指令碼後面make時也沒設定成stdc++11。有人說是因為,make使用的不是bash,而是sh,所以不會將.bashrc作為配置檔案,不管.bashrc裡有什麼都沒用。至於如何改,語焉不詳。但是.bashrc裡的別名不能用於makefile,這樣設計是為了相容性更好,不會出現由於一臺裝置上的別名其他裝置上沒有而使編譯變複雜的情況。相關說法如下。
相關文章
- [Git] 別名(alias)Git
- linux怎麼使用alias建立命令別名?linux系統使用alias建立命令別名的技巧Linux
- 在.bashrc 裡用 alias 設定快捷命令
- 1.5 - Laravel 5.6 - Alias 別名Laravel
- 使用Node.js為require設定別名(alias)Node.jsUI
- [20220328]查詢游標為什麼不共享指令碼.txt指令碼
- Linux基礎命令---alias別名Linux
- shell指令碼中不識別source命令指令碼
- [20220420]完善查詢游標為什麼不共享指令碼.txt指令碼
- webpack的alias別名引用 在webstorm中點選不能跳轉?WebORM
- centos7下別名(alias)的特殊用法CentOS
- make makefile cmake qmake都是什麼,有什麼區別?
- Webpack 中css 如何 import 使用 alias別名 相對路徑WebCSSImport
- shell 命令在終端可以執行成功,為什麼放在 groovy 指令碼中不執行?指令碼
- 在 WebStorm 中,配置能夠識別 Vue CLI 3 建立的專案的別名 alias @WebORMVue
- 為什麼 go 中字串不能用下標訪問Go字串
- nginx關於root與alias的區別Nginx
- Nginx 學習系列(三) ------------- alias、root指令區別Nginx
- 什麼是shell指令碼?Linux為什麼學習shell?指令碼Linux
- Nginx中root和alias的區別Nginx
- Facades 類別名設定流程 (class_alias)
- 為什麼在pyhton中不能用函式重新賦值函式賦值
- 為什麼不上架,選擇企業簽名?
- Python指令碼和網頁有什麼區別?Python指令碼網頁
- Jmeter 本身能錄製指令碼,為什麼還要用 Fiddler 生成指令碼?JMeter指令碼
- 為什麼類只能用public修飾?
- Mac終端給命令設定別名alias的辦法Mac
- vue-cli 3.0配置webpack目錄別名aliasVueWeb
- 能用js實現的最終用js實現,Shell指令碼也不例外JS指令碼
- 為什麼我對簽名訊息的簽名驗證在PHP程式碼中未工作?PHP
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- 程式中算錢不能用浮點型別是個什麼坑?型別
- 做為一名碼農什麼最重要
- 拿什麼解救你我的指令碼?指令碼
- 為什麼89C51的串列埠中斷只能用T1串列埠
- Elasticsearch之索引模板index template與索引別名index aliasElasticsearch索引Index
- Makefile檔案是什麼?
- react 報錯 元素隱式具有 "any" 型別,因為型別為 "string" 的表示式不能用於索引型別 "{}"。 在型別 "{}" 上找不到具有型別為 "string" 的引數的索引簽名。React型別索引