Как перестроить PATH в скрипте?

Как перестроить PATH в скрипте?

Я извлек свой PATH в файл и указал его следующим образом:

/bin
/usr/bin
/usr/local/bin
.
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin
/usr/java/default/bin
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin

Теперь я хочу извлечь его из этого файла и восстановить его как одну строку в новом файле с двоеточиями между каждым каталогом. Я получаю пустой файл, может кто-нибудь показать мне, что я делаю неправильно? Вот команда, которую я выполняю для выполнения восстановления в файл:

echo -e ${bash_list tr \\ :\n} > bash_PATH

решение1

trпринимает входные данные из STDIN (стандартный ввод). Попробуйте это:

$ tr '\n' ':' > output_file  < input_file

Вы использовали синтаксис для расширения параметров Bash, но в качестве параметра используете файл, что неверно, поскольку параметр может быть только переменной или специальным параметром оболочки.

Чтобы сделать то, что вы пытаетесь сделать, используйте только bash:

$ var="$(<bash_list)"
$ echo "${var//$'\n'/:}" > bash_PATH

Теперь bash_PATHфайл будет содержать:

/bin:/usr/bin:/usr/local/bin:.:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin:/usr/java/default/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin

Также обратите внимание, что у вас есть дублирующиеся имена каталогов в "$PATH" (надеюсь, это сделано намеренно, для примера). Чтобы удалить дубликаты, не меняя порядок, попробуйтеэтот.

Связанный контент