2017-02-16 2 views
1

Я создал функцию в .bashrc вот так;Как получить доступ к функции в bashrc на новом терминале

#!/bin/bash 
function test() { ls; } 
export -f test 

и называть его новым терминалом;

$ test 

результат test: command not found

Что я сделал не так, чтобы получить доступ к функции в .bashrc?

+3

Перед запуском функции вы запускали 'source .bashrc'? – codeforester

+2

смешно, потому что 'test' существует в любой системе. – jm666

+2

Где вы пишете файл '.bashrc'? И на самом деле вы управляете 'bash'? –

ответ

2

Функция не определена до тех пор, пока .bashrc не будет получен либо в явном виде, либо при запуске с помощью не-login интерактивной оболочки. Если ваш терминал запустит оболочку входа, то файл не будет отправлен.

Вам не нужно экспортировать функцию.

+0

Что вы говорите, что мне нужно запустить' source .bashrc', насколько я понимаю. Я сделал это, но тот же результат появился. – Miral

+1

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

2

Возможно, вы захотите создать файл «.function» в своем домашнем каталоге и указать его в своем .bashrc.

До: Как видно ниже, это не работает.

%[email protected]> add 2 3 
bash: add: command not found... 

Определить функцию в $ HOME/.function

%[email protected]> cat ~/.function 
add() 
{ 
     echo "$1 + $2" | bc 
} 

Вот как я все функции поиске в моем $ HOME/.bashrc

%[email protected]> cat ~/.bashrc|grep source|grep func 
     source $HOME/.function 
%[email protected]> 

Возможно, вам понадобится снова или снова войти в систему или просто ввести команду bash on, и она должна работать.

Сейчас он работает:

%[email protected]> add 2 3 
5 
%[email protected]> 

Пожалуйста, дайте ему попробовать. Благодарю.

Смежные вопросы