You'd have to actually change directories in your script. Typically:
cd "$(dirname "$0")"
Привет, я запускаю свой скрипт оболочки, который взаимодействует с папками и файлами, но мой $ 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 " $ " dnf -y install $ 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.
- эхо сценарий завершен сценарий завершен
- выход
Я в растерянности, любая помощь будет принята с благодарностью.
You'd have to actually change directories in your script. Typically:
cd "$(dirname "$0")"