系統:CentOS7.9
我寫了一隻 shell script 名稱為 mkdirxxx.sh
放在 /home/user 目錄下
只要執行就會在當前的工作目錄建立一個 xxx 目錄
以 root 為例:
當前的工作目錄為 /home
執行 sh /home/user/mkdirxxx.sh
那麼在 /home 目錄下就會建立一個名為 xxx 目錄
同理, 當前的工作目錄為 /tmp
執行 sh /home/user/mkdirxxx.sh
那麼在 /tmp 目錄下就會建立一個名為 xxx 目錄
接著,我在 /usr/lib/systemd/system 目錄下建立了一個 startmk.service
並且設定好 systemctl enable startmk.service 開機時自動執行 mkdirxxx.sh
這邊問題來了,開機時創建的 xxx 目錄都會建立在主機的根目錄 / 底下,
請問是否有辦法設定每次開機自動執行 mkdirxxx.sh 時的工作目錄,讓 xxx 建立在 /home/user 目錄下?
是要設定 mkdirxxx.sh 還是 startmk.service?
PS:"mkdir /絕對路徑" 不會是我需要的解決辦法,自動建立 xxx 目錄只是我用來說名用的舉例功能,我想請教的是如何設定,才能達到不論當前工作目錄為何,只要執行 mkdirxxx.sh (或執行 systemctl start startmk.service),就只會在設定的目錄下運作並產出結果?
方法 1 : 先 cd 到每個目錄 再執行 shell 例如 : cd /tmp;sh /home/user/mkdirxxx.sh
去 startmk.service 改成 ==> 'cd /tmp;sh sh /home/user/mkdirxxx.sh'
方法 2 : 改 shell , 先 cd /home/user 再去執行 mkdir
至於有那些 /home 下面的 user 有 mkdirxxx.sh
可以用 find 去做然後 cd 到該 user 目錄去
還是 ls + if test file 都可
不好意思再請教 startmk.service 如何設定執行shell的工作目錄?
你說改成 'cd /tmp;sh sh /home/user/mkdirxxx.sh'
是指把上述這段命令直接加進 startmk.service 文件內嗎?
我找了一些文章,有看到說是用 WorkingDirectory= 來設定
但是依然沒有效果
[Unit]
Description=TEST
[Service]
WorkingDirectory=/tmp
ExecStart=/home/user/mkdirxxx.sh
User=user
Group=user
[Install]
WantedBy=multi-user.target
找出問題了
編輯器換行產生的錯誤
# sed -i 's/\r$//' scriptname.sh