使用者路徑檔 url 變數 (Ubuntu)

使用者路徑檔 url 變數 (Ubuntu)

因此,我在各種Linux 設備上玩Minecraft,為了在設備之間同步進度,我使用了32GB USB 3.0 閃存驅動器(我知道,有點過頭了),該驅動器配備了一個包含.minecraft 資料夾中的數據的資料夾和一個Minecraft.jar 檔案啟動整個組合。現在,便攜式的minecraft在Linux上是不可能的,所以我實作了一個額外的shell腳本檔案來將appdata複製到使用者(運行該檔案的人)的主資料夾中,並使用sudo權限將該資料夾重新命名為.minecraft,因為cp省略隱藏檔案。

現在的問題是,要從我的隨身碟複製資料夾,我需要導航到有問題的磁碟機。可是等等!對於那些不知道的人來說,要從 cmd 導航到驅動器,您需要知道使用者名稱。現在,我只希望整個體驗是無縫的(我的意思是不要每次都打開 shell 腳本並編輯用戶),所以我需要知道一種可以用 /media/user/MC 路徑替換變數的方法它會自動導航到有問題的驅動器。哦,當你在做的時候,我還想找到一種方法將更新的遊戲檔案(在我們說構建一些東西並保存它之後)複製回閃存驅動器。

以下是我在插入隨身碟時用來運行 Minecraft 的程式碼範例。

#!/bin/sh
sudo rm -rf ~/.minecraft 
sudo cp -rn  /media/pi0/MC/minecraft  ~/
sudo mv /home/pi0/minecraft /home/pi0/.minecraft
java -jar Minecraft.jar

答案1

如果您使用的所有系統都使用 BASH(如腳本中的 hashbang 語句所建議的),您可以編輯第三行以使用 EUID 環境變數:

sudo cp -rn /media/${EUID}/MC/minecraft ~/

$EUID 將傳回您的有效使用者 ID。它與 sudo 一起使用,這意味著它知道 sudo 升級命令和非升級命令之間的差異。

下面簡單示範了當我呼叫、我用 sudo 呼叫和 root 呼叫時它如何回應

[sheepd0g@sys42 ~]$ echo $EUID
17388
[sheepd0g@sys42 ~]$ sudo echo $EUID
17388
[sheepd0g@sys42 ~]$ su -c 'echo $EUID'
0

答案2

我不知道它是否對你有幫助,但你可以重寫你的程式碼,如下所示:

#!/bin/bash -l
#$ -S /bin/bash
#$ -N $1

rm -rf ~/.minecraft
cp -rn  /media/$1/MC/minecraft  ~/
mv /home/$1/minecraft /home/$1/.minecraft
java -jar Minecraft.jar

並且您可以在參數中指定使用者:sh this_script.sh user將使用路徑/media/user

如果您需要目前用戶,請使用:

sh this_script.sh `whoami`

sudo如果需要的話,也許您可以在命令之前添加。

相關內容