%20%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%B5%20%D0%BC%D0%B5%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png)
Эй, я запускаю свой скрипт оболочки, который взаимодействует с папками и файлами, но мой $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 -гт 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: невозможно stat './MyWirelessCard/fedora23_broadcom_wl_install.sh': Такого файла или каталога нет
- uname1=' '
- '[' ' = 1000' ']'
- '[' ' -r -w -x ./MyWirelessCard/fedora23_broadcom_wl_install.sh ' ']'
- echo 'Выполняется начальное обновление системы.' Выполняется начальное обновление системы.
- Ошибка dnf -y update: эту команду необходимо запустить под пользователем root.
- echo Скрипт завершён Скрипт завершён
- Выход
Я в растерянности, любая помощь будет высоко оценена.
решение1
Вам действительно придется изменить каталоги в вашем скрипте. Обычно:
cd "$(dirname "$0")"