# install yaourt sudo pacman -S yaourt # install with yaourt from AUR yaourt -S <package> # update the packages installed from AUR yaourt -Syua
There is a command called shopt that allows you to change additional shell optional behavior.
I use both Ubuntu and Manjaro and I noticed that sometimes bash behaved differently on Manjaro. For instance, I had a folder called “Test_me”. Once accidentally I wrote “cd test_me” and Manjaro entered the folder “Test_me” (notice the capital ‘T’) without any problem. Under Ubuntu it was impossible :)
As it turned out, the different behaviour is due to different shopt settings. In the example above, “cdspell” was on in Manjaro, while in Ubuntu it was off by default.
Since I use both systems and I want bash to behave similarly, I added these lines to the end of my ~/.bashrc:
# shopt settings (normalize Ubuntu and Manjaro) shopt -s cdspell shopt -s dotglob shopt -s hostcomplete shopt -s nocaseglob shopt -u sourcepath
I switched “sourcepath” off. Read this post if you want to know why.
We know that “
source” is a bash shell built-in command that executes the content of the file passed as argument in the current shell. It has a synonym: ‘.‘ (dot).
The classical use case is “
source .bashrc” in your HOME directory. You do it when you modify your
~/.bashrc file and you want to activate the changes in the current terminal.
source is an alternative name for
. in bash) command behaves more or less the same as when executing a command.
In POSIX sh, the following two will search for a file named
foo in PATH (only).
foo . foo
while the following two will specifically run and source, respectively, the file named
foo in the current directory (only)
./foo . ./foo
Bash differs slightly (when not running in posix mode) in that when you give
source an argument without any slash (
/) characters (e.g.
source foo), it searches through the PATH variable, like POSIX sh, but then also checks the current directory, if it was not found in PATH.” (end of quote)
Because of this I ran into a strange problem. I had a file called “.venv” that I wanted to source (source .venv) but I got some error. If I renamed the file, it worked well. But I wanted to call it “.venv”. What’s wrong?
As explained above, it turned out that “source” started to look for “.venv” in the PATH first. Somehow it found a different file with the very same name and that caused the problem. When I renamed the file to “not_hidden” or “.jabba”, it worked.
The trivial way is to use “./” by telling source to take the argument from the current directory:
However, in my entire life I thought that “source .bashrc” takes the file .bashrc from the current directory. It should, in my opinion :)
If you also think that “source” shouldn’t do anything with the PATH variable, there is a cure. This feature can be switched off. The command “shopt” is a builtin that allows you to change additional shell optional behavior.
The guilty option is this one:
sourcepath If set, the source builtin uses the value of PATH to find the directory containing the file supplied as an argument. This option is enabled by default.
Simply run “shopt” to see if “sourcepath” is on for you. You can switch it off easily:
shopt -u sourcepath
To make it permanent, add this line to the end of your ~/.bashrc.
After all this ado, I could finally write this:
And this is the beauty of Linux. You learn something new every day :)
“Qalculate! is a multi-purpose desktop calculator for GNU/Linux (now ported to Mac). It is small and simple to use but with much power and versatility underneath. Features include customizable functions, units, arbitrary precision, plotting, and a user-friendly interface (KDE or GTK+).” (source)
The software has a command-line interface too that you can start with the command “
qalc“. You can do all kinds of fancy math calculations with it, but this time I’m interested in currency conversions. Qalc supports it too:
$ qalc You need the download exchange rates to be able to convert between different currencies. You can later get current exchange rates with the "exchange rates" command. Do you want to fetch exchange rates now from the Internet (default yes)? yes > 50000 USD to HUF 50000 * dollar = approx. HUF 12157958 > USD to HUF dollar = approx. HUF 243.15915 >
- x-rates.com currency calculator (web-based)
sudo apt-get install most
Then add this line to your ~/.bashrc:
Open a new terminal and try it.
This tip is from here. As the user cannedprimates states, “you can solve this issue by using a different pager, for example
man will actually use the program specified in the
PAGER environment variable.”