我有以下 shell 腳本
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
echo alias mymanager=$DIR/mymanager
問題是,它顯示我必須復制和粘貼的命令。而且我無法使其自動注冊別名。
到目前為止我試過
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
eval alias mymanager=$DIR/mymanager
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
alias mymanager=$DIR/mymanager
但是,mymanager如果我這樣運行它,則不會定義別名。
uj5u.com熱心網友回復:
別名僅在當前行程中有效。當您執行腳本時,會啟動一個新的子行程(shebang 行中指定的二進制檔案),執行腳本,然后終止該行程。當行程終止時,您的別名隨之消失。子行程不能修改父行程(它們不能改變變數,不能引入別名,不能改變父行程的作業目錄(cd))。
如果要在當前 shell 行程中執行腳本的所有行,請使用source命令(.簡稱)。這將忽略shebang解釋器并直接加載檔案。
. ./yourscript.sh # or:
source ./yourscript.sh
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525708.html
標籤:linux重击安慰
