基于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語言調(diào)用函數(shù)),子shell去執(zhí)行我的腳本,在子shell中已經(jīng)切換了目錄了,但是子shell一旦執(zhí)行完,馬上退出,子shell中的變量和操作全部都收回?;氐浇K端根本就看不到這個過程的變化。
驗證解釋:
#! /bin/bash # c.sh history cd /mnt/hgfs/vmshare sleep1 #延遲1s pwd
首先按照 ./c.sh執(zhí)行,這時候終端沒有切換目錄,history執(zhí)行的結(jié)果是空的,說明子shell里面沒有歷史命令(證明前面的解釋是正確的)。
解決方法:source c.sh或者. ./c.sh,這時候就是直接在終端的shell執(zhí)行腳本了,沒有生成子shell,執(zhí)行的結(jié)果就是輸出歷史命令,并且切換了目錄。
注意上面. ./c.sh .和.中間有個空格!
以上這篇基于shell腳本中cd命令無效的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
shell腳本學習指南[二](Arnold Robbins & Nelson H.F. Beebe著)
這篇文章主要介紹了shell腳本學習指南[二](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以參考下2014-02-02
Linux shell 之 提取文件名和目錄名的一些方法總結(jié)
本篇文章主要介紹了Linux shell 之 提取文件名和目錄名的一些方法總結(jié),具有一定的參考價值,有興趣的可以了解一下。2017-01-01
svn服務(wù)器啟動和svn服務(wù)器重啟、停止等操作腳本分享
這篇文章主要介紹了svn服務(wù)器啟動和svn服務(wù)器重啟、停止等操作腳本,需要的朋友可以參考下2014-03-03
linux下安裝oracle后使用命令行啟動的方法 linux啟動oracle
這篇文章主要介紹了在linux下安裝oracle后使用命令啟動oracle的方法,大家參考使用吧2014-01-01
shell腳本配合zabbix實現(xiàn)tomcat的故障自愈功能
這篇文章主要介紹了shell腳本配合zabbix實現(xiàn)tomcat的故障自愈,服務(wù)實現(xiàn)自愈的方式有通過shell腳本+定時任務(wù)的方式,藍鯨Pass故障自愈平臺,shell腳本+zabbix觸發(fā)器動作,本文給大家詳細介紹,需要的朋友可以參考下2022-03-03
一個監(jiān)控LINUX目錄和文件變化的Shell腳本分享
這篇文章主要介紹了一個監(jiān)控LINUX目錄和文件變化的Shell腳本分享,對服務(wù)器經(jīng)常被掛馬的朋友時分有用,需要的朋友可以參考下2014-09-09

