→ A4P8T6X9: 有宣告他是 bash shell? 06/27 11:32
謝謝你開了第一槍
大致搜尋了板上,我以為我問這個是跑錯板
答:沒,我就只有打那麼一行 cd
如果在第一行加入
#!/bin/bash
結果並沒差別
各種 shell 的差異我知道不多,也覺得學下去沒完沒了
所以這問題如果挨罵'你自己不去研究' 我也認了
其實 cd 切換都有成功,只是有一個會退回原子目錄
why? :P
※ 編輯: HuangJC (223.137.16.80), 06/27/2015 11:46:53
推 sonyu: 直接執行是再開一個 shell, 裡面做 cd, 不影響原本的 06/27 11:53
→ sonyu: . = source, 形同在目前 shell 裡 cd 06/27 11:54
原來如此,所以一直都有差別!
挺糟啊,之前我只要發現可以執行,都會懶得打一點
另外,直接執行無法有打一點的效果?
那我乾脆用 alias 組一些變化出來還比較好用
因為我常要切換的子目錄可不只一個..
※ 編輯: HuangJC (223.137.16.80), 06/27/2015 11:59:27
推 sonyu: 命令打在目前的 shell 跟開出來的 subshell 的差別 06/27 12:08
→ sonyu: 目的是影響 shell 環境時 (cd, env, function, alias) 06/27 12:08
→ sonyu: 在 subshell 執行,執行完就結束,原本的 shell 不受影響 06/27 12:08
推 sonyu: 因此影響目前 shell => source 06/27 12:11
When a script is run using source it runs within the existing shell
懂了後才看懂這句翻譯
一向我把 source 理解成 執行
然後我就奇怪這指令怎麼命名的
source 是 來源
執行? 如果是我設計,指令會取名為 excute
無法理解,所以電腦的英文根本是另一套文化
※ 編輯: HuangJC (223.137.16.80), 06/27/2015 12:18:13
推 sonyu: 最終目的是開非 shell 的程式(eg gvim) 還是會直接執行 06/27 12:16
→ sonyu: 可以讓該程式需要的環境不會汙染原本 shell 06/27 12:18
→ sonyu: 如果只是要切換目前 shell 的目錄,用 alias 應該就可以了 06/27 12:18
alias 失敗了,因為我的子目錄含空白
後來用 function 做出來了 :)
iLife()
{
cd /Product/i\ Life
}
像這個 iLife function 就是切子目錄到 '/Product/i Life'
那 alias 怎麼下呢? 空白弄死我了 XD
※ 編輯: HuangJC (223.137.16.80), 06/27/2015 12:55:15
推 andy13579372: 空白前面加反斜線 06/27 13:18
加了,在 function 的例子裡有用,在 alias 沒用
→ andy13579372: 另外一種方式是用symbolic link做捷徑 "ln -S my/d 06/27 13:18
→ andy13579372: ir/i\ Life 06/27 13:18
→ andy13579372: ln -S my/dir/i\ Life 06/27 13:19
symbol link 要小心用啊
我曾想過把所有常見子目錄建在 ~ 目錄上
然後只要一層深度的 cd 就切過去了
但 os 現在會以為我在哪裡?
其他相關相對存取有用嗎?
太複雜了啦...
※ 編輯: HuangJC (223.137.16.80), 06/27/2015 14:25:37
推 andy13579372: 噢噢抱歉我好像有些沒看清楚 我剛試了alias如果加 06/27 19:47
→ andy13579372: 雙引號應該可以 06/27 19:47
→ andy13579372: alias ilife="cd i\ Life" 06/27 19:47
推 peacedove: 這動作感覺alias比較符合你的需求 06/27 21:43
推 Neisseria: source 或 alias 都可達成需求,看那種比較符合習慣 06/28 11:48