請問在bash底下使用cd指令 - Linux

By Freda
at 2014-01-20T02:47
at 2014-01-20T02:47
Table of Contents
※ 引述《layumi (虔心向學)》之銘言:
: 不好意思 , 小弟是linux新手 , 最近想自己寫個簡單bash shell
: 目前執行的bash檔案在/home/123底下
: 想要執行bash檔案之後讓目錄變成 /home/456
: 因此內容寫成
: #!/bin/bash
: cd /home/456
: 結果跑完之後路徑還是在 /home/123
: 請問我該怎麼讓目錄跑到/home/456呢 0.0?
: 先謝過 !!
講講觀念的東西...
直接在shell用"指令(enter)"
或 "sh 指令(enter)"
叫做fork-exec
這時你的shell就會fork一個child process (shell本身是parent process)
也就是產生一個新的PID
parent process會等待child process執行完成後再回到parent process
google到一張圖可以一目了然 http://ppt.cc/8GMw
(proc A就是parent process,proc B則是fork出來的child process
圖片右下那段話先不用理他,那是另一個故事)
這時你這個script是在child process內執行
執行完成後exit,回到parent process
這個script的結果在child process內就terminate了
所以你看不到結果,只看到shell原本的狀態
要避開fork-exec有兩個方法:
一種是推文和回文已經有版友提過的"source 指令(enter)"
另一種就是"exec 指令(enter)"
source是讓指令在原本process內執行(也就是你正在用的shell)
以你的問題來看,source應該是你要的
而exec也是讓指令在原本process內執行
(確切來說,是shell的process被取代為所執行的指令,沒有fork,直接被取代)
不同的是,執行結束後process本身會exit
也就是原本的shell也回不去惹
這是很基本的觀念並不難
希望我說那麼多不會讓你覺得很複雜
--
: 不好意思 , 小弟是linux新手 , 最近想自己寫個簡單bash shell
: 目前執行的bash檔案在/home/123底下
: 想要執行bash檔案之後讓目錄變成 /home/456
: 因此內容寫成
: #!/bin/bash
: cd /home/456
: 結果跑完之後路徑還是在 /home/123
: 請問我該怎麼讓目錄跑到/home/456呢 0.0?
: 先謝過 !!
講講觀念的東西...
直接在shell用"指令(enter)"
或 "sh 指令(enter)"
叫做fork-exec
這時你的shell就會fork一個child process (shell本身是parent process)
也就是產生一個新的PID
parent process會等待child process執行完成後再回到parent process
google到一張圖可以一目了然 http://ppt.cc/8GMw
(proc A就是parent process,proc B則是fork出來的child process
圖片右下那段話先不用理他,那是另一個故事)
這時你這個script是在child process內執行
執行完成後exit,回到parent process
這個script的結果在child process內就terminate了
所以你看不到結果,只看到shell原本的狀態
要避開fork-exec有兩個方法:
一種是推文和回文已經有版友提過的"source 指令(enter)"
另一種就是"exec 指令(enter)"
source是讓指令在原本process內執行(也就是你正在用的shell)
以你的問題來看,source應該是你要的
而exec也是讓指令在原本process內執行
(確切來說,是shell的process被取代為所執行的指令,沒有fork,直接被取代)
不同的是,執行結束後process本身會exit
也就是原本的shell也回不去惹
這是很基本的觀念並不難
希望我說那麼多不會讓你覺得很複雜
--
Tags:
Linux
All Comments

By Madame
at 2014-01-20T07:28
at 2014-01-20T07:28

By Olivia
at 2014-01-20T20:49
at 2014-01-20T20:49
Related Posts
kernel不支援的平台能使用嗎?

By Lucy
at 2014-01-19T19:10
at 2014-01-19T19:10
Red Hat開不了機

By Xanthe
at 2014-01-19T17:39
at 2014-01-19T17:39
用Wine執行LINE

By Doris
at 2014-01-17T20:37
at 2014-01-17T20:37
用mac學linux..合嗎?

By Ivy
at 2014-01-17T01:59
at 2014-01-17T01:59
firefox選單點不出來

By Agnes
at 2014-01-17T00:18
at 2014-01-17T00:18