Перейти к содержимому

Что эквивалентно pathmunge () в csh?

-1

В bash, общая функция, реализованная, например, в / etc / bashrc, это pathmunge(), которая добавляет или добавляет путь к нему, PATHесли он еще не указан среди элементов в PATH.

Пример:

$ echo $PATH /bin:/usr/bin $ pathmunge /home/me/bin $ echo $PATH /home/me/bin:/bin:/usr/bin $ pathmunge /home/me/bin $ echo $PATH /home/me/bin:/bin:/usr/bin 

Наивный способ добавить путь будет следующим:

$ echo $PATH /bin:/usr/bin $ PATH=/home/me/bin:$PATH $ echo $PATH /home/me/bin:/bin:/usr/bin $ PATH=/home/me/bin:$PATH $ echo $PATH /home/me/bin:/home/me/bin:/bin:/usr/bin 

Я очень мало знаю о csh, и я просто хочу сделать эту простую вещь: добавить путь в список, если его там еще нет. Я знаю, что csh использует, pathа не PATHявляется правильным массивом csh.

Возможно, в csh есть какая-то функция массива, if !(foobar in $path) then blahкоторая делает эту функцию pathmunge()ненужной. В этом случае это правильный ответ.

680 просмотров
clacke спросил 11 лет назад
C 118

2 ответа

0

I finally went with the solution of shelling into bash, because it doesn't seem possible to solve this within the ''csh'' language.

~/bin/munge_echo:

#!/bin/bash function munge() { case ":$1:" in *:$2:*) echo "$1" ;; ::) echo "$2" ;; *) echo "$2:$1" ;; esac } munged="$1" shift while [ -n "$1" ]; do munged="$(munge "$munged" "$1")" shift done echo "$munged" 

~/.csh:

setenv PATH `~/bin/munge_echo "$PATH" ~/.local/bin ~/bin` 
grawity · 11 лет назад · 0

Да, но именно поэтому так сложно найти информацию о csh в интернете. Все указывает на то, что «считается вредным» или «10 главных причин не использовать» или «не использовать csh». :-)

clacke · 11 лет назад · 1
clacke ответил 11 лет назад
C 118
0
Принятый ответ

Официальный обходной путь для управления отсутствующими массивами cshзаключается в использовании системы Modules ( пакет environment-modules в Debian).

clacke ответил 11 лет назад
C 118