將我的 shell bash 腳本預設 $PWD 更改為其(腳本的)當前位置

將我的 shell bash 腳本預設 $PWD 更改為其(腳本的)當前位置

嘿,我正在運行與資料夾和檔案互動的 shell 腳本,但我的 $PWD 它一直指向 /home/MyUserName 目錄,這與它應該做的事情混淆了。我正在運行 Linux 4.4.8-300.fc23.x86_64 GNU/Linux:

#!/usr/bin/bash -x

clear
ls $PWD

#Check Root
echo checking Root user
if [ $EUID -ne 0 ]
then
    sudo su
fi;

#Check internet availablity
TEST=$(ping -c 1 74.125.21.14|wc -l)
if [ $TEST -gt 5 2>&1 ]
then
    sudo dnf install gcc kernel-devel binutils cpp glibc-devel glibc-headers isl kernel kernel-headers libmpc
else
    echo "No Internet Connection Available! Installing RPMs manuely."
    arr=(*.rpm)
    for (( i=0; i<${#arr[@]}; i++ ));
    do
        echo " ${arr[$i]} "
        dnf -y install ${arr[$i]}
    done
fi;

# Get Network Ability

echo "Starting the setup of your laptop's wireless card."
if [ -d ./MyWirelessCard ]
then
    FILE=./MyWirelessCard/fedora23_broadcom_wl_install.sh
    uname1=" $( stat -c "%u" $FILE ) "
    [ " $USERNAME1 = 1000" ] || chown 1000 $FILE
    [ " -r -w -x $FILE " ] || chmod +rwx $FILE
else
    mkdir ./MyWirelessCard
    FILE=./MyWirelessCard/fedora23_broadcom_wl_install.sh
    uname1=" $( stat -c "%u" $FILE ) "
    [ " $USERNAME1 = 1000" ] || chown 1000 $FILE
    [ " -r -w -x $FILE " ] || chmod +rwx $FILE
fi;

#Making wireless card installer run on boot
#echo "Making the wireless card install script run on boot"
#ln -s ./MyWirelessCard/fedora23_broadcom_wl_update.sh /etc/init.d/
#ln -s ./MyWirelessCard/fedora23_broadcom_wl_update.sh /etc/rc.d/

# Initial Update

echo "Preforming initial system update."
dnf -y update

#Exit

echo Script is finished
exit

我得到:

  • ls /home/MyUserName 資料夾內容
  • echo 檢查 Root 用戶 檢查 Root 用戶
  • '['1000-ne 0']'
  • sudo su [sudo] MyUserName 的密碼:++ ping -c 1 74.125.21.14 ++ wc -l
  • 測試=6
  • '['6-gt 5']'
  • sudo dnf install gcc kernel-devel binutils cpp glibc-devel glibc-headers isl kernel kernel-headers libmpc [sudo] dcarr 的密碼:
  • echo '開始設定筆記型電腦的無線卡。開始設定筆記型電腦的無線卡。
  • '[' -d ./MyWirelessCard ']'
  • mkdir ./MyWirelessCard
  • FILE=./MyWirelessCard/fedora23_broadcom_wl_install.sh ++ stat -c %u ./MyWirelessCard/fedora23_broadcom_wl_install.sh stat:無法統計“./MyWirelessCard/fedora23_broad_install.sh stat:無法統計“./MyWirelessCard/fedora23_broad_install.sh stat:無法統計”
  • uname1=''
  • '[' ' = 1000' ']'
  • '[' ' -r -w -x ./MyWirelessCard/fedora23_broadcom_wl_install.sh ' ']'
  • echo '執行初始系統更新。執行初始系統更新。
  • dnf -y update 錯誤:此指令必須在 root 使用者下執行。
  • echo 腳本完成 腳本完成
  • 出口

我不知所措,任何幫助將不勝感激。

答案1

您必須實際更改腳本中的目錄。通常:

cd "$(dirname "$0")"

相關內容