I'd like to use keychain with the fish shell, but I'm not sure how to get fish to load the ~/.keychain/hostname-fish file to set the appropriate environment variables.
In bash, there's the "source" command, but it doesn't exist in fish.
I'd like to use keychain with the fish shell, but I'm not sure how to get fish to load the ~/.keychain/hostname-fish file to set the appropriate environment variables.
In bash, there's the "source" command, but it doesn't exist in fish.
Below is what I have in ~/.config/fish/config.fish for your specific example.
set -gx HOSTNAME (hostname)
if status --is-interactive;
keychain --nogui --clear ~/.ssh/id_rsa
[ -e $HOME/.keychain/$HOSTNAME-fish ]; and source $HOME/.keychain/$HOSTNAME-fish
end
The source command is source, which also works in bash.
Prior to fish 2.1.0, the source command was called ..
Use the source command:
source filename.txt
source may not have existed originally but it exists now and the . alias in fish is officially deprecated.
From man . in fish 3.6.1:
. (a single period) is an alias for the source command. The use of . is deprecated in favour of source, and . will be removed in a future version of fish.
The way recommended on the Keychain documentation page is to put this in config.fish:
if status --is-interactive
keychain --eval --quiet --quick path/to/id_rsa
end
Then, add this to the top of your script:
source $HOME/.keychain/(hostname)-fish
source: http://www.funtoo.org/Keychain
The problem is usually you're using source with something that contains bash in it so instead I:
bash
source whatever.sh