Files
在 shell 中更改組
很簡單。我有使用者 foo。foo 屬於 foo (main)、audio、A、B 和common組。
通常文件是使用所有權 foo.foo 創建的。
有一段時間我想 foo 用組common創建文件。基本上我是這樣看的:
Cache present group Change group to *common* Touch alpha Touch beta ... Change group back.
alpha beta(和之後的任何東西)應該用所有者 foo 創建。常見的。我怎樣才能做到這一點?
PS:哎呀。忘了說我想在 bash 和 zsh 中都這樣做。
bash 和 zsh 都沒有這個功能。
你可以打電話
newgrp
。這是一個外部命令,它啟動一個新程序。它執行由SHELL
環境變數指示的程序,不帶參數。newgrp common <<EOS touch alpha beta EOS touch belongs_to_original_group
請注意,由於
newgrp
啟動了一個新的 shell,它不會從原始 shell 的 shell 變數繼承,而只能從環境(導出的)變數繼承。在那裡執行的任何分配都只會在那裡生效。
為此,請使用以下
newgrp
命令:newgrp common touch whatever newgrp foo
由於您是這兩個組的成員(並且可能沒有為這些組使用密碼),因此您應該能夠輕鬆切換。實際上,每次呼叫
newgrp
都會創建一個子shell。您可以檢查您正在使用的“誰”id
。您是從 shell 退出(並恢復上一個組)還是創建新的子 shell,取決於您想要做什麼。與一些相關命令不同,這個命令是在POSIX中:
newgrp 實用程序應使用新的真實有效的組標識創建一個新的 shell 執行環境。