Как получить доступ к конкретному пути в Linux с помощью шеллскрипта - PullRequest
0 голосов
/ 18 февраля 2019

Давайте рассмотрим пример,

scriptPath = / home / sharath / Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

В приведенной выше строке кода, если пользователь«sharath», то он может получить доступ к файлу / папке таким же образом, если пользователь другой, как может динамически получить доступ к этой папке / файлу.

ниже мой сценарий (файл .sh):

#!/bin/bash
set -eu
configLocation=/etc/atollic
scriptPath=/home/sharath/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer
family=STM32
arch=x86_64
version=9.2.0
configFile=${configLocation}/TrueSTUDIO_for_${family}_${arch}_${version}.properties
installPath=/opt/Atollic_TrueSTUDIO_for_${family}_${arch}_${version}/ 
mkdir -p /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/
tar xzf ${scriptPath}/install.data -C /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/

В последней строке скрипта $ {scriptPath} различен для другого пользователя, как это можно сделать в скрипте оболочки.

Обновление 1:

, если я использую, $ {USER} или$ {HOME} или whoami, которое возвращает «root», Вот мой журнал:

tar (child): /root/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer/install.data: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now 

Обновление 2:

В настоящее время пользователь в «root»

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

Я попробовал пару способов, и, наконец, я нашел следующее решение: используйте скрипт ниже для

users
myuser=$(users)

echo "The user is " $myuser

Здесь пользователей возвращает текущее имя пользователя.

Ваш сценарий стал:

#!/bin/bash
users
myuser=$(users)
set -eu
configLocation=/etc/atollic
scriptPath=/home/$myuser/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer
family=STM32
arch=x86_64
version=9.2.0
configFile=${configLocation}/TrueSTUDIO_for_${family}_${arch}_${version}.properties
installPath=/opt/Atollic_TrueSTUDIO_for_${family}_${arch}_${version}/ 
mkdir -p /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/
tar xzf ${scriptPath}/install.data -C /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/

Спасибо за ответ на мой вопрос.

0 голосов
/ 18 февраля 2019

Какую ОС Linux вы используете?

Вы можете просто использовать, как показано ниже,

scriptPath = ~ / Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

где ~ относитсяв домашний каталог пользователя.т.е. / home / sarath

Еще один способ - использовать его, как показано ниже,

scriptPath = "/ home / whoami / Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer"

0 голосов
/ 18 февраля 2019

Dynamic_Path = "/ дом / $ (Whoami) / $ SCRIPT_PATH"

0 голосов
/ 18 февраля 2019

Используйте $ HOME для запуска scriptPath, то есть:

scriptPath=${HOME}/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...