1

Привет, я запускаю свой скрипт оболочки, который взаимодействует с папками и файлами, но мой $ 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 Содержимое папки
  • проверка эха Проверка пользователя Root Проверка пользователя Root
  • '[' 1000 -ne 0 ']'
  • sudo su [sudo] пароль для MyUserName: ++ ping -c 1 74.125.21.14 ++ wc -l
  • ТЕСТ = 6
  • '[' 6-gt 5 ']'
  • sudo dnf установить gcc kernel-devel binutils cpp glibc-devel glibc-headers isl ядро-заголовки ядра 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: невозможно stat './MyWirelessCard/fedora23_broadcom_wl_install.sh ': нет такого файла или каталога
  • uname1 = ''
  • '[' '= 1000' ']'
  • '[' '-r -w -x./MyWirelessCard/fedora23_broadcom_wl_install.sh ''] '
  • echo 'Предварительное формирование исходного обновления системы.«Предварительное выполнение начального обновления системы.
  • Ошибка обновления dnf -y: эта команда должна выполняться от имени пользователя root.
  • эхо сценарий завершен сценарий завершен
  • выход

Я в растерянности, любая помощь будет принята с благодарностью.

1 ответ1

3

Вы должны изменить каталоги в вашем скрипте. Как правило:

cd "$(dirname "$0")"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .