基于shell腳本中cd命令無效的解決方法
在學習的時候,經(jīng)常要切換到固定的文件夾,于是寫了個shell腳本用cd命令切換卻發(fā)現(xiàn)目錄切換不了。
代碼如下:
#! /bin/bash # c.sh cd /mnt/hgfs/vmshare pwd
解釋:執(zhí)行的時候是./c.sh來執(zhí)行的,這樣執(zhí)行的話終端會產(chǎn)生一個子shell(類似于C語言調用函數(shù)),子shell去執(zhí)行我的腳本,在子shell中已經(jīng)切換了目錄了,但是子shell一旦執(zhí)行完,馬上退出,子shell中的變量和操作全部都收回。回到終端根本就看不到這個過程的變化。
驗證解釋:
#! /bin/bash # c.sh history cd /mnt/hgfs/vmshare sleep1 #延遲1s pwd
首先按照 ./c.sh執(zhí)行,這時候終端沒有切換目錄,history執(zhí)行的結果是空的,說明子shell里面沒有歷史命令(證明前面的解釋是正確的)。
解決方法:source c.sh或者. ./c.sh,這時候就是直接在終端的shell執(zhí)行腳本了,沒有生成子shell,執(zhí)行的結果就是輸出歷史命令,并且切換了目錄。
注意上面. ./c.sh .和.中間有個空格!
以上這篇基于shell腳本中cd命令無效的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
通過Shell腳本批量創(chuàng)建服務器上的MySQL數(shù)據(jù)庫賬號
公司有數(shù)百臺 MySQL 實例,如果手動登入來創(chuàng)建賬號很麻煩,也不現(xiàn)實。所以,我們寫了一個簡單的shell腳本,用來創(chuàng)建批量服務器的mysql 賬號。這篇文章主要介紹了通過Shell腳本批量創(chuàng)建服務器上的MySQL數(shù)據(jù)庫賬號的相關知識 ,需要的朋友可以參考下2019-07-07linux?shell中Grep命令查找多個字符串(grep同時匹配多個關鍵字或任意關鍵字)
grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來,下面這篇文章主要給大家介紹了關于linux?shell中Grep命令查找多個字符串(grep同時匹配多個關鍵字或任意關鍵字)的相關資料,需要的朋友可以參考下2022-08-08iredmail下安裝腳本分析(一)---get_all.sh 文件所在目錄為PKGS
這篇文章主要介紹了iredmail下安裝腳本分析(一)---get_all.sh 文件所在目錄為PKGS的相關資料,需要的朋友可以參考下2015-10-10Linux batch命令詳解(在系統(tǒng)不繁忙的時候執(zhí)行定時任務)
batch命令 用于在指定時間,當系統(tǒng)不繁忙時執(zhí)行任務,用法與at相似,這篇文章主要介紹了Linux batch命令(在系統(tǒng)不繁忙的時候執(zhí)行定時任務),需要的朋友可以參考下2024-02-02